diff options
author | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2017-10-06 17:06:15 -0300 |
---|---|---|
committer | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2017-10-06 17:06:15 -0300 |
commit | 89befdb9b259d02249876e39ec6fd28860272439 (patch) | |
tree | 054de50365749426623bed352a10e84299e84cad /docs/doxygen | |
parent | bc5a3e8923cb8efedbbd5b88e212eb0e9009cf87 (diff) | |
download | PSP.git-89befdb9b259d02249876e39ec6fd28860272439.tar.gz PSP.git-89befdb9b259d02249876e39ec6fd28860272439.tar.xz PSP.git-89befdb9b259d02249876e39ec6fd28860272439.zip |
A lot of documentation written
Diffstat (limited to 'docs/doxygen')
241 files changed, 4858 insertions, 1726 deletions
diff --git a/docs/doxygen/html/_branch_8cpp_source.html b/docs/doxygen/html/_branch_8cpp_source.html index 05e75d5..cdf0040 100644 --- a/docs/doxygen/html/_branch_8cpp_source.html +++ b/docs/doxygen/html/_branch_8cpp_source.html @@ -88,16 +88,17 @@ $(document).ready(function(){initNavTree('_branch_8cpp_source.html','');}); <div class="title">Branch.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "Branch.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> Branch::Branch() : <a class="code" href="class_power_element.html">PowerElement</a>() {}</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Branch::~Branch() {}</div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="class_branch.html#a3a651769f183290af8a91494f5e9047b"> 22</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#a3a651769f183290af8a91494f5e9047b">Branch::NodeContains</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  wxRect2DDouble nodeRect1(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxRect2DDouble nodeRect2(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize, 10 + 2.0 * m_borderSize,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">if</span>(nodeRect1.Contains(position)) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_activeNodeID = 1;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">if</span>(nodeRect2.Contains(position)) {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_activeNodeID = 2;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_branch.html#aaf64ea58631438e3a16b1b2ede793875"> 43</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#aaf64ea58631438e3a16b1b2ede793875">Branch::SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1 && parent == m_parentList[0]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2 && parent == m_parentList[1]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  wxRect2DDouble nodeRect(0, 0, 0, 0);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  nodeRect = wxRect2DDouble(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Check if the user is trying to connect the same bus.</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>(m_parentList[1] == parent) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_parentList[0] = parent;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// Centralize the node on bus.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  wxPoint2DDouble parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_pointList[0], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_pointList[0] = parentPt;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span>(m_parentList[0] == parent) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_parentList[1] = parent;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[m_pointList.size() - 1], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_pointList[m_pointList.size() - 1] = parentPt;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) m_parentList[0] = NULL;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) m_parentList[1] = NULL;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc"> 105</a></span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">Branch::RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span>(parent == m_parentList[i]) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_parentList[i] = NULL;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="class_branch.html#a31428bf54c5b95a7a2e63bbf60ef9e35"> 116</a></span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a31428bf54c5b95a7a2e63bbf60ef9e35">Branch::UpdateNodes</a>()</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span>(!m_parentList[0]->Intersects(nodeRect)) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span>(m_parentList[1]) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  wxRect2DDouble nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span>(!m_parentList[1]->Intersects(nodeRect)) {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_parentList[1]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_parentList[1] = NULL;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="class_branch.html#a190d3da81276751c5b9ab23c5d3f37df"> 143</a></span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a190d3da81276751c5b9ab23c5d3f37df">Branch::RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_pointList[0] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], rotAngle);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_pointList[m_pointList.size() - 1] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[m_pointList.size() - 1], rotAngle);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="keywordtype">void</span> Branch::UpdateSwitchesPosition()</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], m_pointList[2]);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_pointList[1] = m_pointList[0];</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span>(m_parentList[1]) {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  m_pointList[m_pointList.size() - 2] =</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  GetSwitchPoint(m_parentList[1], m_pointList[m_pointList.size() - 1], m_pointList[m_pointList.size() - 3]);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_pointList[m_pointList.size() - 2] = m_pointList[m_pointList.size() - 1];</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  UpdateSwitches();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="class_branch.html#a0687f6a668e10dd442c5010649049706"> 172</a></span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a0687f6a668e10dd442c5010649049706">Branch::UpdateSwitches</a>()</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  wxPoint2DDouble swCenter = wxPoint2DDouble((m_pointList[0].m_x + m_pointList[1].m_x) / 2.0,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  (m_pointList[0].m_y + m_pointList[1].m_y) / 2.0);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_switchRect[0] = wxRect2DDouble(swCenter.m_x - m_switchSize / 2.0, swCenter.m_y - m_switchSize / 2.0, m_switchSize,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_switchSize);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span>(m_switchRect.size() > 1) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  swCenter =</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  wxPoint2DDouble((m_pointList[m_pointList.size() - 1].m_x + m_pointList[m_pointList.size() - 2].m_x) / 2.0,</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  (m_pointList[m_pointList.size() - 1].m_y + m_pointList[m_pointList.size() - 2].m_y) / 2.0);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  m_switchRect[1] = wxRect2DDouble(swCenter.m_x - m_switchSize / 2.0, swCenter.m_y - m_switchSize / 2.0,</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  m_switchSize, m_switchSize);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_branch_8h.html">Branch.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> Branch::Branch() : <a class="code" href="class_power_element.html">PowerElement</a>() {}</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Branch::~Branch() {}</div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="class_branch.html#a3a651769f183290af8a91494f5e9047b"> 22</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#a3a651769f183290af8a91494f5e9047b">Branch::NodeContains</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  wxRect2DDouble nodeRect1(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxRect2DDouble nodeRect2(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize, 10 + 2.0 * m_borderSize,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">if</span>(nodeRect1.Contains(position)) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_activeNodeID = 1;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">if</span>(nodeRect2.Contains(position)) {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_activeNodeID = 2;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_branch.html#aaf64ea58631438e3a16b1b2ede793875"> 43</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#aaf64ea58631438e3a16b1b2ede793875">Branch::SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1 && parent == m_parentList[0]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2 && parent == m_parentList[1]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  wxRect2DDouble nodeRect(0, 0, 0, 0);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  nodeRect = wxRect2DDouble(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Check if the user is trying to connect the same bus.</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>(m_parentList[1] == parent) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_parentList[0] = parent;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="comment">// Centralize the node on bus.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  wxPoint2DDouble parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_pointList[0], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_pointList[0] = parentPt;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span>(m_parentList[0] == parent) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_parentList[1] = parent;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[m_pointList.size() - 1], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_pointList[m_pointList.size() - 1] = parentPt;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) m_parentList[0] = NULL;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) m_parentList[1] = NULL;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc"> 105</a></span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">Branch::RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span>(parent == m_parentList[i]) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_parentList[i] = NULL;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="class_branch.html#a31428bf54c5b95a7a2e63bbf60ef9e35"> 116</a></span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a31428bf54c5b95a7a2e63bbf60ef9e35">Branch::UpdateNodes</a>()</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span>(!m_parentList[0]->Intersects(nodeRect)) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span>(m_parentList[1]) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  wxRect2DDouble nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span>(!m_parentList[1]->Intersects(nodeRect)) {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_parentList[1]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_parentList[1] = NULL;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="class_branch.html#a190d3da81276751c5b9ab23c5d3f37df"> 143</a></span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a190d3da81276751c5b9ab23c5d3f37df">Branch::RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_pointList[0] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], rotAngle);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_pointList[m_pointList.size() - 1] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[m_pointList.size() - 1], rotAngle);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="keywordtype">void</span> Branch::UpdateSwitchesPosition()</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], m_pointList[2]);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_pointList[1] = m_pointList[0];</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span>(m_parentList[1]) {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  m_pointList[m_pointList.size() - 2] =</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  GetSwitchPoint(m_parentList[1], m_pointList[m_pointList.size() - 1], m_pointList[m_pointList.size() - 3]);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_pointList[m_pointList.size() - 2] = m_pointList[m_pointList.size() - 1];</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  UpdateSwitches();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="class_branch.html#a0687f6a668e10dd442c5010649049706"> 172</a></span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a0687f6a668e10dd442c5010649049706">Branch::UpdateSwitches</a>()</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  wxPoint2DDouble swCenter = wxPoint2DDouble((m_pointList[0].m_x + m_pointList[1].m_x) / 2.0,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  (m_pointList[0].m_y + m_pointList[1].m_y) / 2.0);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_switchRect[0] = wxRect2DDouble(swCenter.m_x - m_switchSize / 2.0, swCenter.m_y - m_switchSize / 2.0, m_switchSize,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_switchSize);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span>(m_switchRect.size() > 1) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  swCenter =</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  wxPoint2DDouble((m_pointList[m_pointList.size() - 1].m_x + m_pointList[m_pointList.size() - 2].m_x) / 2.0,</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  (m_pointList[m_pointList.size() - 1].m_y + m_pointList[m_pointList.size() - 2].m_y) / 2.0);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  m_switchRect[1] = wxRect2DDouble(swCenter.m_x - m_switchSize / 2.0, swCenter.m_y - m_switchSize / 2.0,</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  m_switchSize, m_switchSize);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> <div class="ttc" id="class_branch_html_aa0328a743090b2b7b3f33d57a867b6dc"><div class="ttname"><a href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">Branch::RemoveParent</a></div><div class="ttdeci">virtual void RemoveParent(Element *parent)</div><div class="ttdoc">Remove a parent. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8cpp_source.html#l00105">Branch.cpp:105</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_branch_html_aaf64ea58631438e3a16b1b2ede793875"><div class="ttname"><a href="class_branch.html#aaf64ea58631438e3a16b1b2ede793875">Branch::SetNodeParent</a></div><div class="ttdeci">virtual bool SetNodeParent(Element *parent)</div><div class="ttdoc">Set a perent to the node. If all conditions are met, a new parent are added to the element and the po...</div><div class="ttdef"><b>Definition:</b> <a href="_branch_8cpp_source.html#l00043">Branch.cpp:43</a></div></div> <div class="ttc" id="class_element_html_a99b213010776b34a27eb814aff288a34"><div class="ttname"><a href="class_element.html#a99b213010776b34a27eb814aff288a34">Element::RotateAtPosition</a></div><div class="ttdeci">virtual wxPoint2DDouble RotateAtPosition(wxPoint2DDouble pointToRotate, double angle, bool degrees=true) const</div><div class="ttdoc">Rotate a point as element position being the origin. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00107">Element.cpp:107</a></div></div> <div class="ttc" id="class_element_html_a038dfd8452fe48ab04bc4e47820c148e"><div class="ttname"><a href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Element::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const =0</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div></div> <div class="ttc" id="class_branch_html_a0687f6a668e10dd442c5010649049706"><div class="ttname"><a href="class_branch.html#a0687f6a668e10dd442c5010649049706">Branch::UpdateSwitches</a></div><div class="ttdeci">virtual void UpdateSwitches()</div><div class="ttdoc">Update the switch position. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8cpp_source.html#l00172">Branch.cpp:172</a></div></div> +<div class="ttc" id="_branch_8h_html"><div class="ttname"><a href="_branch_8h.html">Branch.h</a></div></div> <div class="ttc" id="class_branch_html_a31428bf54c5b95a7a2e63bbf60ef9e35"><div class="ttname"><a href="class_branch.html#a31428bf54c5b95a7a2e63bbf60ef9e35">Branch::UpdateNodes</a></div><div class="ttdeci">virtual void UpdateNodes()</div><div class="ttdoc">Update the nodes according to the parents. If a parent is removed, use this method. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8cpp_source.html#l00116">Branch.cpp:116</a></div></div> <div class="ttc" id="class_branch_html_a3a651769f183290af8a91494f5e9047b"><div class="ttname"><a href="class_branch.html#a3a651769f183290af8a91494f5e9047b">Branch::NodeContains</a></div><div class="ttdeci">virtual bool NodeContains(wxPoint2DDouble position)</div><div class="ttdoc">Check if a node contains a point. If contains, set the attributes related to node movement...</div><div class="ttdef"><b>Definition:</b> <a href="_branch_8cpp_source.html#l00022">Branch.cpp:22</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> <div class="ttc" id="class_element_html_a536ad18a847dcc979c984b3cb287f238"><div class="ttname"><a href="class_element.html#a536ad18a847dcc979c984b3cb287f238">Element::GetPosition</a></div><div class="ttdeci">wxPoint2DDouble GetPosition() const</div><div class="ttdoc">Get the element position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00187">Element.h:187</a></div></div> <div class="ttc" id="class_branch_html_a190d3da81276751c5b9ab23c5d3f37df"><div class="ttname"><a href="class_branch.html#a190d3da81276751c5b9ab23c5d3f37df">Branch::RotateNode</a></div><div class="ttdeci">virtual void RotateNode(Element *parent, bool clockwise=true)</div><div class="ttdoc">Rotate a node. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8cpp_source.html#l00143">Branch.cpp:143</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_branch_8h.html b/docs/doxygen/html/_branch_8h.html new file mode 100644 index 0000000..1f595ab --- /dev/null +++ b/docs/doxygen/html/_branch_8h.html @@ -0,0 +1,116 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/Branch.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_branch_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">Branch.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_power_element_8h_source.html">PowerElement.h</a>"</code><br /> +<code>#include "<a class="el" href="_bus_8h_source.html">Bus.h</a>"</code><br /> +</div> +<p><a href="_branch_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_branch.html">Branch</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Abstract class for branch power elements. <a href="class_branch.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_branch_8h.html">Branch.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_branch_8h_source.html b/docs/doxygen/html/_branch_8h_source.html index 564f01b..9042af4 100644 --- a/docs/doxygen/html/_branch_8h_source.html +++ b/docs/doxygen/html/_branch_8h_source.html @@ -88,33 +88,34 @@ $(document).ready(function(){initNavTree('_branch_8h_source.html','');}); <div class="title">Branch.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef BRANCH_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define BRANCH_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="class_branch.html"> 24</a></span> <span class="keyword">class </span><a class="code" href="class_branch.html">Branch</a> : <span class="keyword">public</span> <a class="code" href="class_power_element.html">PowerElement</a></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="class_branch.html">Branch</a>();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  ~<a class="code" href="class_branch.html">Branch</a>();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="class_branch.html#a691f94c3cd2abe1274e870d2882634d8"> 30</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#a691f94c3cd2abe1274e870d2882634d8">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="class_branch.html#a7037f496f9b9c9e64c74eb638debe278"> 31</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a7037f496f9b9c9e64c74eb638debe278">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const </span>{}</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70"> 32</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70">Move</a>(wxPoint2DDouble position) {}</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64"> 33</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64">StartMove</a>(wxPoint2DDouble position) {}</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_branch.html#aef2ffe79c9b239fb5a1ad175555a9f5a"> 34</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#aef2ffe79c9b239fb5a1ad175555a9f5a">MoveNode</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position) {}</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#a3a651769f183290af8a91494f5e9047b">NodeContains</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#aaf64ea58631438e3a16b1b2ede793875">SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a31428bf54c5b95a7a2e63bbf60ef9e35">UpdateNodes</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_branch.html#a62418f767cc9bb894d6b7cc73645e43e"> 39</a></span>  <span class="keyword">virtual</span> wxCursor <a class="code" href="class_branch.html#a62418f767cc9bb894d6b7cc73645e43e">GetBestPickboxCursor</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> wxCURSOR_ARROW; }</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_branch.html#aa23b1014c947e46996f1c0c4caa187e1"> 40</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#aa23b1014c947e46996f1c0c4caa187e1">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_branch.html#af7879ee138170b1421f745f1c942ea05"> 41</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#af7879ee138170b1421f745f1c942ea05">MovePickbox</a>(wxPoint2DDouble position) {}</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_branch.html#a88ab67c930d37daa723c94d7e59a5cf8"> 42</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#a88ab67c930d37daa723c94d7e59a5cf8">PickboxContains</a>(wxPoint2DDouble position) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a190d3da81276751c5b9ab23c5d3f37df">RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="class_branch.html#a8d6d80c50f849c5be2bccffd5b524e21"> 44</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a8d6d80c50f849c5be2bccffd5b524e21">AddPoint</a>(wxPoint2DDouble point){};</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_branch.html#a6ddd901403c46f5d9aa179644467b088"> 45</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#a6ddd901403c46f5d9aa179644467b088">GetContextMenu</a>(wxMenu& menu) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateSwitchesPosition();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a0687f6a668e10dd442c5010649049706">UpdateSwitches</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">bool</span> m_inserted = <span class="keyword">false</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#endif // BRANCH_H</span></div><div class="ttc" id="class_branch_html_a7037f496f9b9c9e64c74eb638debe278"><div class="ttname"><a href="class_branch.html#a7037f496f9b9c9e64c74eb638debe278">Branch::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00031">Branch.h:31</a></div></div> +<a href="_branch_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef BRANCH_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define BRANCH_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_bus_8h.html">Bus.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="class_branch.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="class_branch.html">Branch</a> : <span class="keyword">public</span> <a class="code" href="class_power_element.html">PowerElement</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="class_branch.html">Branch</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  ~<a class="code" href="class_branch.html">Branch</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_branch.html#a691f94c3cd2abe1274e870d2882634d8"> 37</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#a691f94c3cd2abe1274e870d2882634d8">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_branch.html#a7037f496f9b9c9e64c74eb638debe278"> 38</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a7037f496f9b9c9e64c74eb638debe278">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const </span>{}</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70"> 39</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70">Move</a>(wxPoint2DDouble position) {}</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64"> 40</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64">StartMove</a>(wxPoint2DDouble position) {}</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_branch.html#aef2ffe79c9b239fb5a1ad175555a9f5a"> 41</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#aef2ffe79c9b239fb5a1ad175555a9f5a">MoveNode</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position) {}</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#a3a651769f183290af8a91494f5e9047b">NodeContains</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#aaf64ea58631438e3a16b1b2ede793875">SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a31428bf54c5b95a7a2e63bbf60ef9e35">UpdateNodes</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="class_branch.html#a62418f767cc9bb894d6b7cc73645e43e"> 46</a></span>  <span class="keyword">virtual</span> wxCursor <a class="code" href="class_branch.html#a62418f767cc9bb894d6b7cc73645e43e">GetBestPickboxCursor</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> wxCURSOR_ARROW; }</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="class_branch.html#aa23b1014c947e46996f1c0c4caa187e1"> 47</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#aa23b1014c947e46996f1c0c4caa187e1">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="class_branch.html#af7879ee138170b1421f745f1c942ea05"> 48</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#af7879ee138170b1421f745f1c942ea05">MovePickbox</a>(wxPoint2DDouble position) {}</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_branch.html#a88ab67c930d37daa723c94d7e59a5cf8"> 49</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#a88ab67c930d37daa723c94d7e59a5cf8">PickboxContains</a>(wxPoint2DDouble position) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a190d3da81276751c5b9ab23c5d3f37df">RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="class_branch.html#a8d6d80c50f849c5be2bccffd5b524e21"> 51</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a8d6d80c50f849c5be2bccffd5b524e21">AddPoint</a>(wxPoint2DDouble point){};</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_branch.html#a6ddd901403c46f5d9aa179644467b088"> 52</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_branch.html#a6ddd901403c46f5d9aa179644467b088">GetContextMenu</a>(wxMenu& menu) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateSwitchesPosition();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_branch.html#a0687f6a668e10dd442c5010649049706">UpdateSwitches</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">bool</span> m_inserted = <span class="keyword">false</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#endif // BRANCH_H</span></div><div class="ttc" id="class_branch_html_a7037f496f9b9c9e64c74eb638debe278"><div class="ttname"><a href="class_branch.html#a7037f496f9b9c9e64c74eb638debe278">Branch::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00038">Branch.h:38</a></div></div> <div class="ttc" id="class_branch_html_aa0328a743090b2b7b3f33d57a867b6dc"><div class="ttname"><a href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">Branch::RemoveParent</a></div><div class="ttdeci">virtual void RemoveParent(Element *parent)</div><div class="ttdoc">Remove a parent. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8cpp_source.html#l00105">Branch.cpp:105</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_branch_html_aaf64ea58631438e3a16b1b2ede793875"><div class="ttname"><a href="class_branch.html#aaf64ea58631438e3a16b1b2ede793875">Branch::SetNodeParent</a></div><div class="ttdeci">virtual bool SetNodeParent(Element *parent)</div><div class="ttdoc">Set a perent to the node. If all conditions are met, a new parent are added to the element and the po...</div><div class="ttdef"><b>Definition:</b> <a href="_branch_8cpp_source.html#l00043">Branch.cpp:43</a></div></div> -<div class="ttc" id="class_branch_html_a6ddd901403c46f5d9aa179644467b088"><div class="ttname"><a href="class_branch.html#a6ddd901403c46f5d9aa179644467b088">Branch::GetContextMenu</a></div><div class="ttdeci">virtual bool GetContextMenu(wxMenu &menu)</div><div class="ttdoc">Get the element contex menu. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00045">Branch.h:45</a></div></div> -<div class="ttc" id="class_branch_html_af7879ee138170b1421f745f1c942ea05"><div class="ttname"><a href="class_branch.html#af7879ee138170b1421f745f1c942ea05">Branch::MovePickbox</a></div><div class="ttdeci">virtual void MovePickbox(wxPoint2DDouble position)</div><div class="ttdoc">Move the pickbox. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00041">Branch.h:41</a></div></div> -<div class="ttc" id="class_branch_html_a947cec45fcdc78d01eaabe19d23daf64"><div class="ttname"><a href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64">Branch::StartMove</a></div><div class="ttdeci">virtual void StartMove(wxPoint2DDouble position)</div><div class="ttdoc">Update the element attributes related to the movement. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00033">Branch.h:33</a></div></div> +<div class="ttc" id="class_branch_html_a6ddd901403c46f5d9aa179644467b088"><div class="ttname"><a href="class_branch.html#a6ddd901403c46f5d9aa179644467b088">Branch::GetContextMenu</a></div><div class="ttdeci">virtual bool GetContextMenu(wxMenu &menu)</div><div class="ttdoc">Get the element contex menu. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00052">Branch.h:52</a></div></div> +<div class="ttc" id="class_branch_html_af7879ee138170b1421f745f1c942ea05"><div class="ttname"><a href="class_branch.html#af7879ee138170b1421f745f1c942ea05">Branch::MovePickbox</a></div><div class="ttdeci">virtual void MovePickbox(wxPoint2DDouble position)</div><div class="ttdoc">Move the pickbox. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00048">Branch.h:48</a></div></div> +<div class="ttc" id="class_branch_html_a947cec45fcdc78d01eaabe19d23daf64"><div class="ttname"><a href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64">Branch::StartMove</a></div><div class="ttdeci">virtual void StartMove(wxPoint2DDouble position)</div><div class="ttdoc">Update the element attributes related to the movement. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00040">Branch.h:40</a></div></div> +<div class="ttc" id="_bus_8h_html"><div class="ttname"><a href="_bus_8h.html">Bus.h</a></div></div> <div class="ttc" id="class_branch_html_a0687f6a668e10dd442c5010649049706"><div class="ttname"><a href="class_branch.html#a0687f6a668e10dd442c5010649049706">Branch::UpdateSwitches</a></div><div class="ttdeci">virtual void UpdateSwitches()</div><div class="ttdoc">Update the switch position. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8cpp_source.html#l00172">Branch.cpp:172</a></div></div> -<div class="ttc" id="class_branch_html_a691f94c3cd2abe1274e870d2882634d8"><div class="ttname"><a href="class_branch.html#a691f94c3cd2abe1274e870d2882634d8">Branch::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00030">Branch.h:30</a></div></div> -<div class="ttc" id="class_branch_html_a8d6d80c50f849c5be2bccffd5b524e21"><div class="ttname"><a href="class_branch.html#a8d6d80c50f849c5be2bccffd5b524e21">Branch::AddPoint</a></div><div class="ttdeci">virtual void AddPoint(wxPoint2DDouble point)</div><div class="ttdoc">Add point to the list of points that connect the element to the bus. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00044">Branch.h:44</a></div></div> -<div class="ttc" id="class_branch_html_aa23b1014c947e46996f1c0c4caa187e1"><div class="ttname"><a href="class_branch.html#aa23b1014c947e46996f1c0c4caa187e1">Branch::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00040">Branch.h:40</a></div></div> -<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div><div class="ttdoc">Switching data of power elements. </div></div> +<div class="ttc" id="class_branch_html_a691f94c3cd2abe1274e870d2882634d8"><div class="ttname"><a href="class_branch.html#a691f94c3cd2abe1274e870d2882634d8">Branch::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00037">Branch.h:37</a></div></div> +<div class="ttc" id="class_branch_html_a8d6d80c50f849c5be2bccffd5b524e21"><div class="ttname"><a href="class_branch.html#a8d6d80c50f849c5be2bccffd5b524e21">Branch::AddPoint</a></div><div class="ttdeci">virtual void AddPoint(wxPoint2DDouble point)</div><div class="ttdoc">Add point to the list of points that connect the element to the bus. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00051">Branch.h:51</a></div></div> +<div class="ttc" id="class_branch_html_aa23b1014c947e46996f1c0c4caa187e1"><div class="ttname"><a href="class_branch.html#aa23b1014c947e46996f1c0c4caa187e1">Branch::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00047">Branch.h:47</a></div></div> +<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div></div> <div class="ttc" id="class_branch_html_a31428bf54c5b95a7a2e63bbf60ef9e35"><div class="ttname"><a href="class_branch.html#a31428bf54c5b95a7a2e63bbf60ef9e35">Branch::UpdateNodes</a></div><div class="ttdeci">virtual void UpdateNodes()</div><div class="ttdoc">Update the nodes according to the parents. If a parent is removed, use this method. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8cpp_source.html#l00116">Branch.cpp:116</a></div></div> <div class="ttc" id="class_branch_html_a3a651769f183290af8a91494f5e9047b"><div class="ttname"><a href="class_branch.html#a3a651769f183290af8a91494f5e9047b">Branch::NodeContains</a></div><div class="ttdeci">virtual bool NodeContains(wxPoint2DDouble position)</div><div class="ttdoc">Check if a node contains a point. If contains, set the attributes related to node movement...</div><div class="ttdef"><b>Definition:</b> <a href="_branch_8cpp_source.html#l00022">Branch.cpp:22</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> -<div class="ttc" id="class_branch_html_a88ab67c930d37daa723c94d7e59a5cf8"><div class="ttname"><a href="class_branch.html#a88ab67c930d37daa723c94d7e59a5cf8">Branch::PickboxContains</a></div><div class="ttdeci">virtual bool PickboxContains(wxPoint2DDouble position)</div><div class="ttdoc">Check if a pickbox contains a point. If contains the attributes related to pickbox movement will be c...</div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00042">Branch.h:42</a></div></div> -<div class="ttc" id="class_branch_html_a7cf4b117f43f49bb76cce3df5521fb70"><div class="ttname"><a href="class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70">Branch::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00032">Branch.h:32</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="class_branch_html_a88ab67c930d37daa723c94d7e59a5cf8"><div class="ttname"><a href="class_branch.html#a88ab67c930d37daa723c94d7e59a5cf8">Branch::PickboxContains</a></div><div class="ttdeci">virtual bool PickboxContains(wxPoint2DDouble position)</div><div class="ttdoc">Check if a pickbox contains a point. If contains the attributes related to pickbox movement will be c...</div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00049">Branch.h:49</a></div></div> +<div class="ttc" id="class_branch_html_a7cf4b117f43f49bb76cce3df5521fb70"><div class="ttname"><a href="class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70">Branch::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00039">Branch.h:39</a></div></div> <div class="ttc" id="class_branch_html_a190d3da81276751c5b9ab23c5d3f37df"><div class="ttname"><a href="class_branch.html#a190d3da81276751c5b9ab23c5d3f37df">Branch::RotateNode</a></div><div class="ttdeci">virtual void RotateNode(Element *parent, bool clockwise=true)</div><div class="ttdoc">Rotate a node. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8cpp_source.html#l00143">Branch.cpp:143</a></div></div> -<div class="ttc" id="class_branch_html_aef2ffe79c9b239fb5a1ad175555a9f5a"><div class="ttname"><a href="class_branch.html#aef2ffe79c9b239fb5a1ad175555a9f5a">Branch::MoveNode</a></div><div class="ttdeci">virtual void MoveNode(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Move a node. StartMove(wxPoint2DDouble position) before start moving. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00034">Branch.h:34</a></div></div> -<div class="ttc" id="class_branch_html_a62418f767cc9bb894d6b7cc73645e43e"><div class="ttname"><a href="class_branch.html#a62418f767cc9bb894d6b7cc73645e43e">Branch::GetBestPickboxCursor</a></div><div class="ttdeci">virtual wxCursor GetBestPickboxCursor() const</div><div class="ttdoc">Get the best cursor to shown to the user when the mouse is above a pickbox. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00039">Branch.h:39</a></div></div> -<div class="ttc" id="class_branch_html"><div class="ttname"><a href="class_branch.html">Branch</a></div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00024">Branch.h:24</a></div></div> +<div class="ttc" id="class_branch_html_aef2ffe79c9b239fb5a1ad175555a9f5a"><div class="ttname"><a href="class_branch.html#aef2ffe79c9b239fb5a1ad175555a9f5a">Branch::MoveNode</a></div><div class="ttdeci">virtual void MoveNode(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Move a node. StartMove(wxPoint2DDouble position) before start moving. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00041">Branch.h:41</a></div></div> +<div class="ttc" id="class_branch_html_a62418f767cc9bb894d6b7cc73645e43e"><div class="ttname"><a href="class_branch.html#a62418f767cc9bb894d6b7cc73645e43e">Branch::GetBestPickboxCursor</a></div><div class="ttdeci">virtual wxCursor GetBestPickboxCursor() const</div><div class="ttdoc">Get the best cursor to shown to the user when the mouse is above a pickbox. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00046">Branch.h:46</a></div></div> +<div class="ttc" id="class_branch_html"><div class="ttname"><a href="class_branch.html">Branch</a></div><div class="ttdoc">Abstract class for branch power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00031">Branch.h:31</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>Branch.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_branch_8h.html">Branch.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_bus_8cpp_source.html b/docs/doxygen/html/_bus_8cpp_source.html index 999dc39..cd7c2f2 100644 --- a/docs/doxygen/html/_bus_8cpp_source.html +++ b/docs/doxygen/html/_bus_8cpp_source.html @@ -88,8 +88,8 @@ $(document).ready(function(){initNavTree('_bus_8cpp_source.html','');}); <div class="title">Bus.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> Bus::Bus() : <a class="code" href="class_power_element.html">PowerElement</a>() {}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> Bus::Bus(wxPoint2DDouble position) : <a class="code" href="class_power_element.html">PowerElement</a>()</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_width = 100.0;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_height = 5.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(position);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> Bus::Bus(wxPoint2DDouble position, wxString name)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_width = 100.0;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_height = 5.0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(position);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_electricalData.name = name;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> Bus::~Bus() {}</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_bus.html#ae9022ca29399377d2fe0082bb762107c"> 41</a></span> <span class="keywordtype">void</span> <a class="code" href="class_bus.html#ae9022ca29399377d2fe0082bb762107c">Bus::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword"></span>{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// Draw selection (layer 1)</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// If the object is selected, the matrix is reset to remove scale effects applied to it, thus keeping the</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// edges with fixed sizes for all zoom levels.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  glPushMatrix();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  glLoadIdentity();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// The matrix was reset, so we must use screen coordinates (WorldToScreen).</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  wxPoint2DDouble screenPt = <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  glTranslated(screenPt.m_x, screenPt.m_y, 0.0);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  glTranslated(-screenPt.m_x, -screenPt.m_y, 0.0);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  glColor4dv(m_selectionColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  wxPoint2DDouble pts[4] = {<a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale, -(m_width / 2.0), -(m_height / 2.0)) -</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  wxPoint2DDouble(m_borderSize, m_borderSize),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale, -(m_width / 2.0), (m_height / 2.0)) -</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  wxPoint2DDouble(m_borderSize, -m_borderSize),</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale, (m_width / 2.0), (m_height / 2.0)) -</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  wxPoint2DDouble(-m_borderSize, -m_borderSize),</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale, (m_width / 2.0), -(m_height / 2.0)) -</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  wxPoint2DDouble(-m_borderSize, m_borderSize)};</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(pts);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  glPopMatrix();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// Draw bus (layer 2)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Push the current matrix on stack.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  glPushMatrix();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Rotate the matrix around the object position.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  glColor4dv(m_dynamicEventColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  glColor4dv(m_busColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(m_position, m_width, m_height);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// Pop the old matrix back.</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  glPopMatrix();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// Draw pickbox (layer 3)</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(m_showPickbox) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  glPushMatrix();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  glLoadIdentity();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  wxPoint2DDouble screenPt = <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  glTranslated(screenPt.m_x, screenPt.m_y, 0.0);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  glTranslated(-screenPt.m_x, -screenPt.m_y, 0.0);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  wxPoint2DDouble pbPosition[2] = {<a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale, m_width / 2.0),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale, -m_width / 2.0)};</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="class_element.html#ad1d0d803fe522d030e2be8dc99eb9b39">DrawPickbox</a>(pbPosition[0]);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="class_element.html#ad1d0d803fe522d030e2be8dc99eb9b39">DrawPickbox</a>(pbPosition[1]);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  glPopMatrix();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="class_bus.html#ad2b960058be6e990463b53d79c74c7a3"> 104</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#ad2b960058be6e990463b53d79c74c7a3">Bus::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keyword"></span>{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  wxPoint2DDouble ptR = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -m_angle);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="class_bus.html#a5014be68f4bb5d8f1a1ea861b03bacdf"> 110</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#a5014be68f4bb5d8f1a1ea861b03bacdf">Bus::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keyword"></span>{</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span>(m_angle == 0.0 || m_angle == 180.0) <span class="keywordflow">return</span> m_rect.Intersects(rect);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <a class="code" href="class_element.html#a01563b5b2fed2860132f4dd1593f9eea">RotatedRectanglesIntersects</a>(m_rect, rect, m_angle, 0.0);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="class_bus.html#a0b8f3ed6e0049dafca8c52358f96bf4b"> 117</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#a0b8f3ed6e0049dafca8c52358f96bf4b">Bus::PickboxContains</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_activePickboxID = <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  wxPoint2DDouble ptR = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -m_angle);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  wxPoint2DDouble center(m_position.m_x + m_width / 2.0, m_position.m_y);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  wxRect2DDouble rectRight(center.m_x - 5.0, center.m_y - 5.0, 10.0, 10.0);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  center = wxPoint2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  wxRect2DDouble rectLeft(center.m_x - 5.0, center.m_y - 5.0, 10.0, 10.0);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span>(rectRight.Contains(ptR)) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_activePickboxID = <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0">ID_PB_RIGHT</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span>(rectLeft.Contains(ptR)) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_activePickboxID = <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721">ID_PB_LEFT</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="class_bus.html#ac43fc37f8c8a8bc120d9a4bb68da3345"> 141</a></span> wxCursor <a class="code" href="class_bus.html#ac43fc37f8c8a8bc120d9a4bb68da3345">Bus::GetBestPickboxCursor</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="keyword"></span>{</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">double</span> angle = m_angle;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">while</span>(angle >= 157.5) angle -= 180.0;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(angle >= -22.5 && angle < 22.5)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_SIZEWE);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(angle >= 22.5 && angle < 67.5)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_SIZENWSE);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(angle >= 67.5 && angle < 112.5)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_SIZENS);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(angle >= 112.5 && angle < 157.5)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_SIZENESW);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_ARROW);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="class_bus.html#ad569e2192bf95efe668d401583382a04"> 158</a></span> <span class="keywordtype">void</span> <a class="code" href="class_bus.html#ad569e2192bf95efe668d401583382a04">Bus::MovePickbox</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a>) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  wxPoint2DDouble ptR = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -m_angle);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">double</span> dx = 0.0;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0">ID_PB_RIGHT</a>)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  dx = ptR.m_x - m_position.m_x - m_width / 2.0;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721">ID_PB_LEFT</a>)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  dx = m_position.m_x - m_width / 2.0 - ptR.m_x;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span>(m_width + dx < 20.0) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0">ID_PB_RIGHT</a>) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_position.m_x += (dx / 2.0) * std::cos(wxDegToRad(m_angle));</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_position.m_y += (dx / 2.0) * std::sin(wxDegToRad(m_angle));</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721">ID_PB_LEFT</a>) {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_position.m_x -= (dx / 2.0) * std::cos(wxDegToRad(m_angle));</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_position.m_y -= (dx / 2.0) * std::sin(wxDegToRad(m_angle));</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  m_width += dx;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_position);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="class_bus.html#ace039d00c23d36a7c14d7e4155c94791"> 184</a></span> <span class="keywordtype">void</span> <a class="code" href="class_bus.html#ace039d00c23d36a7c14d7e4155c94791">Bus::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  m_angle += rotAngle;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="class_bus.html#ae731d57078982f0bd08e92e6a24f3057"> 193</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#ae731d57078982f0bd08e92e6a24f3057">Bus::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit bus"</span>));</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="class_element.html#a35f55626a29d5256f8dc07cf92655e64">GeneralMenuItens</a>(menu);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="class_bus.html#a93dbd8f80b11123395093f561d5241d0"> 200</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#a93dbd8f80b11123395093f561d5241d0">Bus::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="class_bus_form.html">BusForm</a>* busForm = <span class="keyword">new</span> <a class="code" href="class_bus_form.html">BusForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span>(busForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  busForm->Destroy();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  busForm->Destroy();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="class_bus.html#a4288c4c84c8840705c3ce6ccd42e578c"> 212</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_bus.html#a4288c4c84c8840705c3ce6ccd42e578c">Bus::GetCopy</a>()</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="class_bus.html">Bus</a>* copy = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="class_bus.html#a0cf17a7aec23d436ff1eeb9834eb2b70"> 218</a></span> wxString <a class="code" href="class_bus.html#a0cf17a7aec23d436ff1eeb9834eb2b70">Bus::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keyword"></span>{</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  tipText += wxString::Format(<span class="stringliteral">" (%d)"</span>, m_electricalData.number + 1);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  tipText += <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(m_electricalData.nominalVoltage, 1) +</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  (m_electricalData.nominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a> ? _(<span class="stringliteral">" V"</span>) : _(<span class="stringliteral">" kV"</span>));</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  tipText += _(<span class="stringliteral">"\nV = "</span>) + wxString::FromDouble(std::abs(m_electricalData.voltage), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  tipText += wxString(L<span class="stringliteral">'\u03B8'</span>) + <span class="stringliteral">" = "</span> + wxString::FromDouble(wxRadToDeg(std::arg(m_electricalData.voltage)), 5) +</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="stringliteral">" "</span> + wxString(L<span class="stringliteral">'\u00B0'</span>);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  tipText += _(<span class="stringliteral">"\n\nFault info:"</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  tipText += _(<span class="stringliteral">"\nVa = "</span>) + wxString::FromDouble(std::abs(m_electricalData.faultVoltage[0]), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  tipText += _(<span class="stringliteral">"\nVb = "</span>) + wxString::FromDouble(std::abs(m_electricalData.faultVoltage[1]), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  tipText += _(<span class="stringliteral">"\nVc = "</span>) + wxString::FromDouble(std::abs(m_electricalData.faultVoltage[2]), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span>(m_electricalData.hasFault) {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  tipText += _(<span class="stringliteral">"\nIa = "</span>) + wxString::FromDouble(std::abs(m_electricalData.faultCurrent[0]), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  tipText += _(<span class="stringliteral">"\nIb = "</span>) + wxString::FromDouble(std::abs(m_electricalData.faultCurrent[1]), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  tipText += _(<span class="stringliteral">"\nIc = "</span>) + wxString::FromDouble(std::abs(m_electricalData.faultCurrent[2]), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  tipText += _(<span class="stringliteral">"\n\nSsc = "</span>) + wxString::FromDouble(std::abs(m_electricalData.scPower), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="class_bus.html#a1ccb74b15ba07f867f2d73b976577e2a"> 246</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#a1ccb74b15ba07f867f2d73b976577e2a">Bus::GetPlotData</a>(<a class="code" href="class_element_plot_data.html">ElementPlotData</a>& plotData)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">if</span>(!m_electricalData.plotBus) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  plotData.SetName(m_electricalData.name);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  plotData.SetCurveType(ElementPlotData::CT_BUS);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  std::vector<double> absVoltage, argVoltage;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_electricalData.stabVoltageVector.size(); ++i) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  absVoltage.push_back(std::abs(m_electricalData.stabVoltageVector[i]));</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  argVoltage.push_back(wxRadToDeg(std::arg(m_electricalData.stabVoltageVector[i])));</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  plotData.AddData(absVoltage, _(<span class="stringliteral">"Voltage"</span>));</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  plotData.AddData(argVoltage, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> }</div><div class="ttc" id="class_bus_html_a93dbd8f80b11123395093f561d5241d0"><div class="ttname"><a href="class_bus.html#a93dbd8f80b11123395093f561d5241d0">Bus::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8cpp_source.html#l00200">Bus.cpp:200</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_bus_8h.html">Bus.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> Bus::Bus() : <a class="code" href="class_power_element.html">PowerElement</a>() {}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> Bus::Bus(wxPoint2DDouble position) : <a class="code" href="class_power_element.html">PowerElement</a>()</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_width = 100.0;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_height = 5.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(position);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> Bus::Bus(wxPoint2DDouble position, wxString name)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_width = 100.0;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_height = 5.0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(position);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_electricalData.name = name;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> Bus::~Bus() {}</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_bus.html#ae9022ca29399377d2fe0082bb762107c"> 41</a></span> <span class="keywordtype">void</span> <a class="code" href="class_bus.html#ae9022ca29399377d2fe0082bb762107c">Bus::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword"></span>{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// Draw selection (layer 1)</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// If the object is selected, the matrix is reset to remove scale effects applied to it, thus keeping the</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// edges with fixed sizes for all zoom levels.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  glPushMatrix();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  glLoadIdentity();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// The matrix was reset, so we must use screen coordinates (WorldToScreen).</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  wxPoint2DDouble screenPt = <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  glTranslated(screenPt.m_x, screenPt.m_y, 0.0);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  glTranslated(-screenPt.m_x, -screenPt.m_y, 0.0);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  glColor4dv(m_selectionColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  wxPoint2DDouble pts[4] = {<a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale, -(m_width / 2.0), -(m_height / 2.0)) -</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  wxPoint2DDouble(m_borderSize, m_borderSize),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale, -(m_width / 2.0), (m_height / 2.0)) -</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  wxPoint2DDouble(m_borderSize, -m_borderSize),</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale, (m_width / 2.0), (m_height / 2.0)) -</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  wxPoint2DDouble(-m_borderSize, -m_borderSize),</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale, (m_width / 2.0), -(m_height / 2.0)) -</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  wxPoint2DDouble(-m_borderSize, m_borderSize)};</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(pts);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  glPopMatrix();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// Draw bus (layer 2)</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Push the current matrix on stack.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  glPushMatrix();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Rotate the matrix around the object position.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  glColor4dv(m_dynamicEventColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  glColor4dv(m_busColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(m_position, m_width, m_height);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="comment">// Pop the old matrix back.</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  glPopMatrix();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// Draw pickbox (layer 3)</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(m_showPickbox) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  glPushMatrix();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  glLoadIdentity();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  wxPoint2DDouble screenPt = <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  glTranslated(screenPt.m_x, screenPt.m_y, 0.0);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  glTranslated(-screenPt.m_x, -screenPt.m_y, 0.0);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  wxPoint2DDouble pbPosition[2] = {<a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale, m_width / 2.0),</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">WorldToScreen</a>(translation, scale, -m_width / 2.0)};</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="class_element.html#ad1d0d803fe522d030e2be8dc99eb9b39">DrawPickbox</a>(pbPosition[0]);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="class_element.html#ad1d0d803fe522d030e2be8dc99eb9b39">DrawPickbox</a>(pbPosition[1]);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  glPopMatrix();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="class_bus.html#ad2b960058be6e990463b53d79c74c7a3"> 104</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#ad2b960058be6e990463b53d79c74c7a3">Bus::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keyword"></span>{</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  wxPoint2DDouble ptR = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -m_angle);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="class_bus.html#a5014be68f4bb5d8f1a1ea861b03bacdf"> 110</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#a5014be68f4bb5d8f1a1ea861b03bacdf">Bus::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keyword"></span>{</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span>(m_angle == 0.0 || m_angle == 180.0) <span class="keywordflow">return</span> m_rect.Intersects(rect);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <a class="code" href="class_element.html#a01563b5b2fed2860132f4dd1593f9eea">RotatedRectanglesIntersects</a>(m_rect, rect, m_angle, 0.0);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="class_bus.html#a0b8f3ed6e0049dafca8c52358f96bf4b"> 117</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#a0b8f3ed6e0049dafca8c52358f96bf4b">Bus::PickboxContains</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_activePickboxID = <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  wxPoint2DDouble ptR = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -m_angle);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  wxPoint2DDouble center(m_position.m_x + m_width / 2.0, m_position.m_y);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  wxRect2DDouble rectRight(center.m_x - 5.0, center.m_y - 5.0, 10.0, 10.0);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  center = wxPoint2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  wxRect2DDouble rectLeft(center.m_x - 5.0, center.m_y - 5.0, 10.0, 10.0);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span>(rectRight.Contains(ptR)) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_activePickboxID = <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0">ID_PB_RIGHT</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span>(rectLeft.Contains(ptR)) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_activePickboxID = <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721">ID_PB_LEFT</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="class_bus.html#ac43fc37f8c8a8bc120d9a4bb68da3345"> 141</a></span> wxCursor <a class="code" href="class_bus.html#ac43fc37f8c8a8bc120d9a4bb68da3345">Bus::GetBestPickboxCursor</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="keyword"></span>{</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">double</span> angle = m_angle;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">while</span>(angle >= 157.5) angle -= 180.0;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(angle >= -22.5 && angle < 22.5)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_SIZEWE);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(angle >= 22.5 && angle < 67.5)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_SIZENWSE);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(angle >= 67.5 && angle < 112.5)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_SIZENS);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(angle >= 112.5 && angle < 157.5)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_SIZENESW);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> wxCursor(wxCURSOR_ARROW);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="class_bus.html#ad569e2192bf95efe668d401583382a04"> 158</a></span> <span class="keywordtype">void</span> <a class="code" href="class_bus.html#ad569e2192bf95efe668d401583382a04">Bus::MovePickbox</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a>) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  wxPoint2DDouble ptR = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -m_angle);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">double</span> dx = 0.0;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0">ID_PB_RIGHT</a>)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  dx = ptR.m_x - m_position.m_x - m_width / 2.0;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721">ID_PB_LEFT</a>)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  dx = m_position.m_x - m_width / 2.0 - ptR.m_x;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span>(m_width + dx < 20.0) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0">ID_PB_RIGHT</a>) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_position.m_x += (dx / 2.0) * std::cos(wxDegToRad(m_angle));</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_position.m_y += (dx / 2.0) * std::sin(wxDegToRad(m_angle));</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721">ID_PB_LEFT</a>) {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_position.m_x -= (dx / 2.0) * std::cos(wxDegToRad(m_angle));</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_position.m_y -= (dx / 2.0) * std::sin(wxDegToRad(m_angle));</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  m_width += dx;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_position);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="class_bus.html#ace039d00c23d36a7c14d7e4155c94791"> 184</a></span> <span class="keywordtype">void</span> <a class="code" href="class_bus.html#ace039d00c23d36a7c14d7e4155c94791">Bus::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  m_angle += rotAngle;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="class_bus.html#ae731d57078982f0bd08e92e6a24f3057"> 193</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#ae731d57078982f0bd08e92e6a24f3057">Bus::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit bus"</span>));</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="class_element.html#a35f55626a29d5256f8dc07cf92655e64">GeneralMenuItens</a>(menu);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="class_bus.html#a93dbd8f80b11123395093f561d5241d0"> 200</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#a93dbd8f80b11123395093f561d5241d0">Bus::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="class_bus_form.html">BusForm</a>* busForm = <span class="keyword">new</span> <a class="code" href="class_bus_form.html">BusForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span>(busForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  busForm->Destroy();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  busForm->Destroy();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="class_bus.html#a4288c4c84c8840705c3ce6ccd42e578c"> 212</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_bus.html#a4288c4c84c8840705c3ce6ccd42e578c">Bus::GetCopy</a>()</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="class_bus.html">Bus</a>* copy = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="class_bus.html#a0cf17a7aec23d436ff1eeb9834eb2b70"> 218</a></span> wxString <a class="code" href="class_bus.html#a0cf17a7aec23d436ff1eeb9834eb2b70">Bus::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keyword"></span>{</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  tipText += wxString::Format(<span class="stringliteral">" (%d)"</span>, m_electricalData.number + 1);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  tipText += <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(m_electricalData.nominalVoltage, 1) +</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  (m_electricalData.nominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a> ? _(<span class="stringliteral">" V"</span>) : _(<span class="stringliteral">" kV"</span>));</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  tipText += _(<span class="stringliteral">"\nV = "</span>) + wxString::FromDouble(std::abs(m_electricalData.voltage), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  tipText += wxString(L<span class="stringliteral">'\u03B8'</span>) + <span class="stringliteral">" = "</span> + wxString::FromDouble(wxRadToDeg(std::arg(m_electricalData.voltage)), 5) +</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="stringliteral">" "</span> + wxString(L<span class="stringliteral">'\u00B0'</span>);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  tipText += _(<span class="stringliteral">"\n\nFault info:"</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  tipText += _(<span class="stringliteral">"\nVa = "</span>) + wxString::FromDouble(std::abs(m_electricalData.faultVoltage[0]), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  tipText += _(<span class="stringliteral">"\nVb = "</span>) + wxString::FromDouble(std::abs(m_electricalData.faultVoltage[1]), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  tipText += _(<span class="stringliteral">"\nVc = "</span>) + wxString::FromDouble(std::abs(m_electricalData.faultVoltage[2]), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span>(m_electricalData.hasFault) {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  tipText += _(<span class="stringliteral">"\nIa = "</span>) + wxString::FromDouble(std::abs(m_electricalData.faultCurrent[0]), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  tipText += _(<span class="stringliteral">"\nIb = "</span>) + wxString::FromDouble(std::abs(m_electricalData.faultCurrent[1]), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  tipText += _(<span class="stringliteral">"\nIc = "</span>) + wxString::FromDouble(std::abs(m_electricalData.faultCurrent[2]), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  tipText += _(<span class="stringliteral">"\n\nSsc = "</span>) + wxString::FromDouble(std::abs(m_electricalData.scPower), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="class_bus.html#a1ccb74b15ba07f867f2d73b976577e2a"> 246</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#a1ccb74b15ba07f867f2d73b976577e2a">Bus::GetPlotData</a>(<a class="code" href="class_element_plot_data.html">ElementPlotData</a>& plotData)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">if</span>(!m_electricalData.plotBus) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  plotData.SetName(m_electricalData.name);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  plotData.SetCurveType(ElementPlotData::CT_BUS);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  std::vector<double> absVoltage, argVoltage;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_electricalData.stabVoltageVector.size(); ++i) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  absVoltage.push_back(std::abs(m_electricalData.stabVoltageVector[i]));</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  argVoltage.push_back(wxRadToDeg(std::arg(m_electricalData.stabVoltageVector[i])));</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  plotData.AddData(absVoltage, _(<span class="stringliteral">"Voltage"</span>));</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  plotData.AddData(argVoltage, _(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> }</div><div class="ttc" id="class_bus_html_a93dbd8f80b11123395093f561d5241d0"><div class="ttname"><a href="class_bus.html#a93dbd8f80b11123395093f561d5241d0">Bus::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8cpp_source.html#l00200">Bus.cpp:200</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00030">PowerElement.h:30</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00052">Element.h:52</a></div></div> <div class="ttc" id="class_bus_html_ad569e2192bf95efe668d401583382a04"><div class="ttname"><a href="class_bus.html#ad569e2192bf95efe668d401583382a04">Bus::MovePickbox</a></div><div class="ttdeci">virtual void MovePickbox(wxPoint2DDouble position)</div><div class="ttdoc">Move the pickbox. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8cpp_source.html#l00158">Bus.cpp:158</a></div></div> @@ -100,10 +100,11 @@ $(document).ready(function(){initNavTree('_bus_8cpp_source.html','');}); <div class="ttc" id="class_element_html_a99b213010776b34a27eb814aff288a34"><div class="ttname"><a href="class_element.html#a99b213010776b34a27eb814aff288a34">Element::RotateAtPosition</a></div><div class="ttdeci">virtual wxPoint2DDouble RotateAtPosition(wxPoint2DDouble pointToRotate, double angle, bool degrees=true) const</div><div class="ttdoc">Rotate a point as element position being the origin. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00107">Element.cpp:107</a></div></div> <div class="ttc" id="class_bus_form_html"><div class="ttname"><a href="class_bus_form.html">BusForm</a></div><div class="ttdoc">Form to edit the bus power data. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_form_8h_source.html#l00031">BusForm.h:31</a></div></div> <div class="ttc" id="class_element_html_a6c37e613808c5ee3bc37bb14a1fe85c8"><div class="ttname"><a href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">Element::DrawRectangle</a></div><div class="ttdeci">virtual void DrawRectangle(wxPoint2DDouble position, double width, double height, GLenum mode=GL_QUADS) const</div><div class="ttdoc">Draw rectangle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00069">Element.cpp:69</a></div></div> +<div class="ttc" id="_bus_8h_html"><div class="ttname"><a href="_bus_8h.html">Bus.h</a></div></div> <div class="ttc" id="class_element_html_a35f55626a29d5256f8dc07cf92655e64"><div class="ttname"><a href="class_element.html#a35f55626a29d5256f8dc07cf92655e64">Element::GeneralMenuItens</a></div><div class="ttdeci">virtual void GeneralMenuItens(wxMenu &menu)</div><div class="ttdoc">Insert general itens to context menu. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00245">Element.cpp:245</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="class_bus_html_a1ccb74b15ba07f867f2d73b976577e2a"><div class="ttname"><a href="class_bus.html#a1ccb74b15ba07f867f2d73b976577e2a">Bus::GetPlotData</a></div><div class="ttdeci">virtual bool GetPlotData(ElementPlotData &plotData)</div><div class="ttdoc">Fill the plot data. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8cpp_source.html#l00246">Bus.cpp:246</a></div></div> -<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00056">ElementPlotData.h:56</a></div></div> +<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00064">ElementPlotData.h:64</a></div></div> <div class="ttc" id="class_element_html_a920fe7ba1563615857618f01e64b3284"><div class="ttname"><a href="class_element.html#a920fe7ba1563615857618f01e64b3284">Element::SetPosition</a></div><div class="ttdeci">void SetPosition(const wxPoint2DDouble position)</div><div class="ttdoc">Set the element position and update the rectangle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00025">Element.cpp:25</a></div></div> <div class="ttc" id="class_bus_html_ac43fc37f8c8a8bc120d9a4bb68da3345"><div class="ttname"><a href="class_bus.html#ac43fc37f8c8a8bc120d9a4bb68da3345">Bus::GetBestPickboxCursor</a></div><div class="ttdeci">virtual wxCursor GetBestPickboxCursor() const</div><div class="ttdoc">Get the best cursor to shown to the user when the mouse is above a pickbox. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8cpp_source.html#l00141">Bus.cpp:141</a></div></div> <div class="ttc" id="class_element_html_ad1d0d803fe522d030e2be8dc99eb9b39"><div class="ttname"><a href="class_element.html#ad1d0d803fe522d030e2be8dc99eb9b39">Element::DrawPickbox</a></div><div class="ttdeci">virtual void DrawPickbox(wxPoint2DDouble position) const</div><div class="ttdoc">Draw pickbox. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00098">Element.cpp:98</a></div></div> @@ -112,7 +113,7 @@ $(document).ready(function(){initNavTree('_bus_8cpp_source.html','');}); <div class="ttc" id="_element_8h_html_a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721"><div class="ttname"><a href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721">ID_PB_LEFT</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00040">Element.h:40</a></div></div> <div class="ttc" id="class_element_html_abb2e253ec1e86353cd7160209c96553c"><div class="ttname"><a href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a></div><div class="ttdeci">static wxString StringFromDouble(double value, int minDecimal=1)</div><div class="ttdoc">Convert a double value to string. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00320">Element.cpp:320</a></div></div> <div class="ttc" id="_element_8h_html_a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0"><div class="ttname"><a href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0">ID_PB_RIGHT</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00039">Element.h:39</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> <div class="ttc" id="class_bus_html_a4288c4c84c8840705c3ce6ccd42e578c"><div class="ttname"><a href="class_bus.html#a4288c4c84c8840705c3ce6ccd42e578c">Bus::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8cpp_source.html#l00212">Bus.cpp:212</a></div></div> <div class="ttc" id="class_bus_html_ad2b960058be6e990463b53d79c74c7a3"><div class="ttname"><a href="class_bus.html#ad2b960058be6e990463b53d79c74c7a3">Bus::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8cpp_source.html#l00104">Bus.cpp:104</a></div></div> <div class="ttc" id="class_bus_html_a5014be68f4bb5d8f1a1ea861b03bacdf"><div class="ttname"><a href="class_bus.html#a5014be68f4bb5d8f1a1ea861b03bacdf">Bus::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8cpp_source.html#l00110">Bus.cpp:110</a></div></div> diff --git a/docs/doxygen/html/_bus_8h.html b/docs/doxygen/html/_bus_8h.html new file mode 100644 index 0000000..b589e3e --- /dev/null +++ b/docs/doxygen/html/_bus_8h.html @@ -0,0 +1,118 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/Bus.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_bus_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">Bus.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_bus_form_8h_source.html">BusForm.h</a>"</code><br /> +<code>#include "<a class="el" href="_power_element_8h_source.html">PowerElement.h</a>"</code><br /> +</div> +<p><a href="_bus_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_bus_electrical_data.html">BusElectricalData</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_bus.html">Bus</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> for power elements. All others power elements are connected through this. <a href="class_bus.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_bus_8h.html">Bus.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_bus_8h_source.html b/docs/doxygen/html/_bus_8h_source.html index 8fa6343..970bebe 100644 --- a/docs/doxygen/html/_bus_8h_source.html +++ b/docs/doxygen/html/_bus_8h_source.html @@ -88,25 +88,25 @@ $(document).ready(function(){initNavTree('_bus_8h_source.html','');}); <div class="title">Bus.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef BUS_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define BUS_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_bus_form_8h.html">BusForm.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="struct_bus_electrical_data.html"> 24</a></span> <span class="keyword">struct </span><a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">int</span> number = 0;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> nominalVoltage = 138.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalVoltageUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">bool</span> isVoltageControlled = <span class="keyword">false</span>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> controlledVoltage = 1.0;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">int</span> controlledVoltageUnitChoice = 0; <span class="comment">// 0 = p.u., 1 = same as nominalVoltageUnit (UNIT_V or UNIT_kV).</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">bool</span> slackBus = <span class="keyword">false</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="comment">// Power flow (p.u.)</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  std::complex<double> voltage = std::complex<double>(1.0, 0.0);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  std::complex<double> power = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">int</span> busType = 2; <span class="comment">// PQ</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> hasFault = <span class="keyword">false</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a> faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a> faultLocation = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">double</span> faultResistance = 0.0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> faultReactance = 0.0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  std::complex<double> faultCurrent[3] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  std::complex<double> faultVoltage[3] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> scPower = 0.0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Stability</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">bool</span> plotBus = <span class="keyword">false</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">bool</span> stabHasFault = <span class="keyword">false</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> stabFaultTime = 0.0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">double</span> stabFaultLength = 0.0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">double</span> stabFaultResistance = 0.0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">double</span> stabFaultReactance = 0.0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  std::vector<std::complex<double> > stabVoltageVector;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="class_bus.html"> 62</a></span> <span class="keyword">class </span><a class="code" href="class_bus.html">Bus</a> : <span class="keyword">public</span> <a class="code" href="class_power_element.html">PowerElement</a></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_bus.html">Bus</a>();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble position, wxString name);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  ~<a class="code" href="class_bus.html">Bus</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="class_bus.html#ab046baebe4bfe0a52905148d78f44681"> 70</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#ab046baebe4bfe0a52905148d78f44681">AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Intersects(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Rotate(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> wxCursor GetBestPickboxCursor() <span class="keyword">const</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> MovePickbox(wxPoint2DDouble position);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> PickboxContains(wxPoint2DDouble position);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">virtual</span> <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> GetElectricalData()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetPlotData(<a class="code" href="class_element_plot_data.html">ElementPlotData</a>& plotData);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> m_electricalData;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> };</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor">#endif // BUS_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_bus_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef BUS_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define BUS_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_bus_form_8h.html">BusForm.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="struct_bus_electrical_data.html"> 24</a></span> <span class="keyword">struct </span><a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">int</span> number = 0;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> nominalVoltage = 138.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalVoltageUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">bool</span> isVoltageControlled = <span class="keyword">false</span>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> controlledVoltage = 1.0;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">int</span> controlledVoltageUnitChoice = 0; <span class="comment">// 0 = p.u., 1 = same as nominalVoltageUnit (UNIT_V or UNIT_kV).</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">bool</span> slackBus = <span class="keyword">false</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="comment">// Power flow (p.u.)</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  std::complex<double> voltage = std::complex<double>(1.0, 0.0);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  std::complex<double> power = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">int</span> busType = 2; <span class="comment">// PQ</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">bool</span> hasFault = <span class="keyword">false</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a> faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a> faultLocation = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">double</span> faultResistance = 0.0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> faultReactance = 0.0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  std::complex<double> faultCurrent[3] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  std::complex<double> faultVoltage[3] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> scPower = 0.0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Stability</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">bool</span> plotBus = <span class="keyword">false</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">bool</span> stabHasFault = <span class="keyword">false</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> stabFaultTime = 0.0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">double</span> stabFaultLength = 0.0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">double</span> stabFaultResistance = 0.0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">double</span> stabFaultReactance = 0.0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  std::vector<std::complex<double> > stabVoltageVector;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> };</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="class_bus.html"> 69</a></span> <span class="keyword">class </span><a class="code" href="class_bus.html">Bus</a> : <span class="keyword">public</span> <a class="code" href="class_power_element.html">PowerElement</a></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="class_bus.html">Bus</a>();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble position, wxString name);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  ~<a class="code" href="class_bus.html">Bus</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="class_bus.html#ab046baebe4bfe0a52905148d78f44681"> 77</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_bus.html#ab046baebe4bfe0a52905148d78f44681">AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Intersects(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Rotate(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">virtual</span> wxCursor GetBestPickboxCursor() <span class="keyword">const</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> MovePickbox(wxPoint2DDouble position);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> PickboxContains(wxPoint2DDouble position);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">virtual</span> <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> GetElectricalData()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetPlotData(<a class="code" href="class_element_plot_data.html">ElementPlotData</a>& plotData);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> m_electricalData;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> };</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#endif // BUS_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cb"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a></div><div class="ttdeci">FaultData</div><div class="ttdoc">Information about fault (type and location). </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00055">PowerElement.h:55</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00031">PowerElement.h:31</a></div></div> <div class="ttc" id="struct_bus_electrical_data_html"><div class="ttname"><a href="struct_bus_electrical_data.html">BusElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00024">Bus.h:24</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220cca"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a></div><div class="ttdeci">ElectricalUnit</div><div class="ttdoc">Electrical units. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00028">PowerElement.h:28</a></div></div> <div class="ttc" id="_bus_form_8h_html"><div class="ttname"><a href="_bus_form_8h.html">BusForm.h</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00060">PowerElement.h:60</a></div></div> -<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00056">ElementPlotData.h:56</a></div></div> +<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00064">ElementPlotData.h:64</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00056">PowerElement.h:56</a></div></div> -<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div><div class="ttdoc">Switching data of power elements. </div></div> -<div class="ttc" id="class_bus_html_ab046baebe4bfe0a52905148d78f44681"><div class="ttname"><a href="class_bus.html#ab046baebe4bfe0a52905148d78f44681">Bus::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00070">Bus.h:70</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div></div> +<div class="ttc" id="class_bus_html_ab046baebe4bfe0a52905148d78f44681"><div class="ttname"><a href="class_bus.html#ab046baebe4bfe0a52905148d78f44681">Bus::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00077">Bus.h:77</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>Bus.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_bus_8h.html">Bus.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_bus_form_8cpp_source.html b/docs/doxygen/html/_bus_form_8cpp_source.html index c75a647..0be2845 100644 --- a/docs/doxygen/html/_bus_form_8cpp_source.html +++ b/docs/doxygen/html/_bus_form_8cpp_source.html @@ -88,14 +88,15 @@ $(document).ready(function(){initNavTree('_bus_form_8cpp_source.html','');}); <div class="title">BusForm.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_bus_form_8h.html">BusForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> BusForm::BusForm(wxWindow* parent, <a class="code" href="class_bus.html">Bus</a>* bus) : <a class="code" href="class_bus_form_base.html">BusFormBase</a>(parent)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_choiceFaultType->SetString(0, _(<span class="stringliteral">"Three-phase"</span>));</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_choiceFaultType->SetString(1, _(<span class="stringliteral">"Line-to-line"</span>));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_choiceFaultType->SetString(2, _(<span class="stringliteral">"Double line-to-ground"</span>));</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_choiceFaultType->SetString(3, _(<span class="stringliteral">"Line-to-ground"</span>));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_parent = parent;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_bus = bus;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_textCtrlName->SetValue(bus->GetElectricalData().name);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_textCtrlNomVoltage->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().nominalVoltage));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">if</span>(bus->GetElectricalData().nominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_choiceNomVoltage->SetSelection(0);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_choiceNomVoltage->SetSelection(1);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_checkBoxCtrlVoltage->SetValue(bus->GetElectricalData().isVoltageControlled);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_textCtrlCtrlVoltage->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().controlledVoltage));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_choiceCtrlVoltage->SetSelection(bus->GetElectricalData().controlledVoltageUnitChoice);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_checkBoxSlackBus->SetValue(bus->GetElectricalData().slackBus);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_checkBoxFault->SetValue(bus->GetElectricalData().hasFault);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">switch</span>(bus->GetElectricalData().faultType) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a>: {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_choiceFaultType->SetSelection(0);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</a>: {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_choiceFaultType->SetSelection(1);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e">FAULT_2LINE_GROUND</a>: {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_choiceFaultType->SetSelection(2);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d">FAULT_LINE_GROUND</a>: {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_choiceFaultType->SetSelection(3);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">switch</span>(bus->GetElectricalData().faultLocation) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a>: {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_choiceFaultPlace->SetSelection(0);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</a>: {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_choiceFaultPlace->SetSelection(1);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a>: {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_choiceFaultPlace->SetSelection(2);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_textCtrlFaultResistance->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().faultResistance));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_textCtrlFaultReactance->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().faultReactance));</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_checkBoxPlotData->SetValue(bus->GetElectricalData().plotBus);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_checkBoxStabFault->SetValue(bus->GetElectricalData().stabHasFault);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_textCtrlStabFaultTime->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().stabFaultTime));</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_textCtrlStabFaultLength->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().stabFaultLength));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_textCtrlStabFaultResistance->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().stabFaultResistance));</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_textCtrlStabFaultReactance->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().stabFaultReactance));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  EnableCtrlVoltageFields(bus->GetElectricalData().isVoltageControlled);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  EnableFaultFields(bus->GetElectricalData().hasFault);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  EnableStabFaultFields(bus->GetElectricalData().stabHasFault);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> BusForm::~BusForm() {}</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keywordtype">void</span> BusForm::OnButtonCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keywordtype">void</span> BusForm::OnButtonOKClick(wxCommandEvent& event)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = m_bus->GetElectricalData();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlNomVoltage->GetValue(), data.nominalVoltage,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Rated voltage\"."</span>)))</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  data.nominalVoltageUnit = m_choiceNomVoltage->GetSelection() == 0 ? <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a> : <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  data.isVoltageControlled = m_checkBoxCtrlVoltage->GetValue();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span>(data.isVoltageControlled) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlCtrlVoltage->GetValue(), data.controlledVoltage,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Controlled voltage\"."</span>)))</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  data.controlledVoltageUnitChoice = m_choiceCtrlVoltage->GetSelection();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  data.slackBus = m_checkBoxSlackBus->GetValue();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  data.hasFault = m_checkBoxFault->GetValue();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">switch</span>(m_choiceFaultType->GetSelection()) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  data.faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  data.faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  data.faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e">FAULT_2LINE_GROUND</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  data.faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d">FAULT_LINE_GROUND</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">switch</span>(m_choiceFaultPlace->GetSelection()) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  data.faultLocation = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  data.faultLocation = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  data.faultLocation = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlFaultResistance->GetValue(), data.faultResistance,</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault resistance\"."</span>)))</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlFaultReactance->GetValue(), data.faultReactance,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault reactance\"."</span>)))</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  data.plotBus = m_checkBoxPlotData->GetValue();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  data.stabHasFault = m_checkBoxStabFault->GetValue();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlStabFaultTime->GetValue(), data.stabFaultTime,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Time\"."</span>)))</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlStabFaultLength->GetValue(), data.stabFaultLength,</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault lenght\"."</span>)))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlStabFaultResistance->GetValue(), data.stabFaultResistance,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault resistence (stability)\"."</span>)))</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlStabFaultReactance->GetValue(), data.stabFaultReactance,</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault reactance (stability)\"."</span>)))</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_bus->SetElectricalData(data);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span>(data.stabHasFault)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_bus->SetDynamicEvent(<span class="keyword">true</span>);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_bus->SetDynamicEvent(<span class="keyword">false</span>);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="keywordtype">void</span> BusForm::OnNominalVoltageChoice(wxCommandEvent& event) { UpdateChoiceBoxes(); }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keywordtype">void</span> BusForm::OnFaultTypeChoice(wxCommandEvent& event) { UpdateChoiceBoxes(); }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="keywordtype">void</span> BusForm::OnControlledVoltageClick(wxCommandEvent& event)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  EnableCtrlVoltageFields(m_checkBoxCtrlVoltage->GetValue());</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keywordtype">void</span> BusForm::OnInsertFaultClick(wxCommandEvent& event) { EnableFaultFields(m_checkBoxFault->GetValue()); }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keywordtype">void</span> BusForm::OnInsertStabFaultClick(wxCommandEvent& event) { EnableStabFaultFields(m_checkBoxStabFault->GetValue()); }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keywordtype">void</span> BusForm::EnableCtrlVoltageFields(<span class="keywordtype">bool</span> enable)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  m_textCtrlCtrlVoltage->Enable(enable);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  m_choiceCtrlVoltage->Enable(enable);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  UpdateChoiceBoxes();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keywordtype">void</span> BusForm::EnableFaultFields(<span class="keywordtype">bool</span> enable)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  m_choiceFaultType->Enable(enable);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  m_choiceFaultPlace->Enable(enable);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  m_textCtrlFaultReactance->Enable(enable);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  m_textCtrlFaultResistance->Enable(enable);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_staticTextPU_1->Enable(enable);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  m_staticTextPU_2->Enable(enable);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  UpdateChoiceBoxes();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="keywordtype">void</span> BusForm::EnableStabFaultFields(<span class="keywordtype">bool</span> enable)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  m_textCtrlStabFaultTime->Enable(enable);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  m_textCtrlStabFaultLength->Enable(enable);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  m_staticTextS_1->Enable(enable);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  m_staticTextS_2->Enable(enable);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  m_textCtrlStabFaultReactance->Enable(enable);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  m_textCtrlStabFaultResistance->Enable(enable);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  m_staticTextPU_3->Enable(enable);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  m_staticTextPU_4->Enable(enable);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="keywordtype">void</span> BusForm::UpdateChoiceBoxes()</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">switch</span>(m_choiceFaultType->GetSelection()) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">case</span> 0: <span class="comment">// three-phase</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  m_choiceFaultPlace->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">case</span> 1: <span class="comment">// line-to-line</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">case</span> 2: <span class="comment">// double line-to-line</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span>(m_checkBoxFault->GetValue()) m_choiceFaultPlace->Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  m_choiceFaultPlace->SetString(0, _(<span class="stringliteral">"Lines AB"</span>));</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_choiceFaultPlace->SetString(1, _(<span class="stringliteral">"Lines BC"</span>));</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_choiceFaultPlace->SetString(2, _(<span class="stringliteral">"Lines CA"</span>));</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">case</span> 3: <span class="comment">// line-to-ground</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(m_checkBoxFault->GetValue()) m_choiceFaultPlace->Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  m_choiceFaultPlace->SetString(0, _(<span class="stringliteral">"Line A"</span>));</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  m_choiceFaultPlace->SetString(1, _(<span class="stringliteral">"Line B"</span>));</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  m_choiceFaultPlace->SetString(2, _(<span class="stringliteral">"Line C"</span>));</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">switch</span>(m_choiceNomVoltage->GetSelection()) {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  m_choiceCtrlVoltage->SetString(1, _(<span class="stringliteral">"V"</span>));</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  m_choiceCtrlVoltage->SetString(1, _(<span class="stringliteral">"kV"</span>));</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> }</div><div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00062">PowerElement.h:62</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_bus_form_8h.html">BusForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_bus_8h.html">Bus.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> BusForm::BusForm(wxWindow* parent, <a class="code" href="class_bus.html">Bus</a>* bus) : <a class="code" href="class_bus_form_base.html">BusFormBase</a>(parent)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_choiceFaultType->SetString(0, _(<span class="stringliteral">"Three-phase"</span>));</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_choiceFaultType->SetString(1, _(<span class="stringliteral">"Line-to-line"</span>));</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_choiceFaultType->SetString(2, _(<span class="stringliteral">"Double line-to-ground"</span>));</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_choiceFaultType->SetString(3, _(<span class="stringliteral">"Line-to-ground"</span>));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_parent = parent;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_bus = bus;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_textCtrlName->SetValue(bus->GetElectricalData().name);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_textCtrlNomVoltage->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().nominalVoltage));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">if</span>(bus->GetElectricalData().nominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_choiceNomVoltage->SetSelection(0);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_choiceNomVoltage->SetSelection(1);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_checkBoxCtrlVoltage->SetValue(bus->GetElectricalData().isVoltageControlled);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_textCtrlCtrlVoltage->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().controlledVoltage));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_choiceCtrlVoltage->SetSelection(bus->GetElectricalData().controlledVoltageUnitChoice);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_checkBoxSlackBus->SetValue(bus->GetElectricalData().slackBus);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_checkBoxFault->SetValue(bus->GetElectricalData().hasFault);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">switch</span>(bus->GetElectricalData().faultType) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a>: {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_choiceFaultType->SetSelection(0);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</a>: {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_choiceFaultType->SetSelection(1);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e">FAULT_2LINE_GROUND</a>: {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_choiceFaultType->SetSelection(2);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d">FAULT_LINE_GROUND</a>: {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_choiceFaultType->SetSelection(3);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">switch</span>(bus->GetElectricalData().faultLocation) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a>: {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_choiceFaultPlace->SetSelection(0);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</a>: {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_choiceFaultPlace->SetSelection(1);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a>: {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_choiceFaultPlace->SetSelection(2);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_textCtrlFaultResistance->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().faultResistance));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_textCtrlFaultReactance->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().faultReactance));</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_checkBoxPlotData->SetValue(bus->GetElectricalData().plotBus);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_checkBoxStabFault->SetValue(bus->GetElectricalData().stabHasFault);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_textCtrlStabFaultTime->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().stabFaultTime));</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_textCtrlStabFaultLength->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().stabFaultLength));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_textCtrlStabFaultResistance->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().stabFaultResistance));</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_textCtrlStabFaultReactance->SetValue(bus-><a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(bus->GetElectricalData().stabFaultReactance));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  EnableCtrlVoltageFields(bus->GetElectricalData().isVoltageControlled);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  EnableFaultFields(bus->GetElectricalData().hasFault);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  EnableStabFaultFields(bus->GetElectricalData().stabHasFault);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> BusForm::~BusForm() {}</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keywordtype">void</span> BusForm::OnButtonCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keywordtype">void</span> BusForm::OnButtonOKClick(wxCommandEvent& event)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = m_bus->GetElectricalData();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlNomVoltage->GetValue(), data.nominalVoltage,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Rated voltage\"."</span>)))</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  data.nominalVoltageUnit = m_choiceNomVoltage->GetSelection() == 0 ? <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a> : <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  data.isVoltageControlled = m_checkBoxCtrlVoltage->GetValue();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span>(data.isVoltageControlled) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlCtrlVoltage->GetValue(), data.controlledVoltage,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Controlled voltage\"."</span>)))</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  data.controlledVoltageUnitChoice = m_choiceCtrlVoltage->GetSelection();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  data.slackBus = m_checkBoxSlackBus->GetValue();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  data.hasFault = m_checkBoxFault->GetValue();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">switch</span>(m_choiceFaultType->GetSelection()) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  data.faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  data.faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  data.faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e">FAULT_2LINE_GROUND</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  data.faultType = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d">FAULT_LINE_GROUND</a>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">switch</span>(m_choiceFaultPlace->GetSelection()) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  data.faultLocation = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  data.faultLocation = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  data.faultLocation = <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlFaultResistance->GetValue(), data.faultResistance,</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault resistance\"."</span>)))</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlFaultReactance->GetValue(), data.faultReactance,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault reactance\"."</span>)))</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  data.plotBus = m_checkBoxPlotData->GetValue();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  data.stabHasFault = m_checkBoxStabFault->GetValue();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlStabFaultTime->GetValue(), data.stabFaultTime,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Time\"."</span>)))</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlStabFaultLength->GetValue(), data.stabFaultLength,</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault lenght\"."</span>)))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlStabFaultResistance->GetValue(), data.stabFaultResistance,</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault resistence (stability)\"."</span>)))</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span>(!m_bus->DoubleFromString(m_parent, m_textCtrlStabFaultReactance->GetValue(), data.stabFaultReactance,</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Fault reactance (stability)\"."</span>)))</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_bus->SetElectricalData(data);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span>(data.stabHasFault)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_bus->SetDynamicEvent(<span class="keyword">true</span>);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_bus->SetDynamicEvent(<span class="keyword">false</span>);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="keywordtype">void</span> BusForm::OnNominalVoltageChoice(wxCommandEvent& event) { UpdateChoiceBoxes(); }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keywordtype">void</span> BusForm::OnFaultTypeChoice(wxCommandEvent& event) { UpdateChoiceBoxes(); }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="keywordtype">void</span> BusForm::OnControlledVoltageClick(wxCommandEvent& event)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  EnableCtrlVoltageFields(m_checkBoxCtrlVoltage->GetValue());</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="keywordtype">void</span> BusForm::OnInsertFaultClick(wxCommandEvent& event) { EnableFaultFields(m_checkBoxFault->GetValue()); }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keywordtype">void</span> BusForm::OnInsertStabFaultClick(wxCommandEvent& event) { EnableStabFaultFields(m_checkBoxStabFault->GetValue()); }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keywordtype">void</span> BusForm::EnableCtrlVoltageFields(<span class="keywordtype">bool</span> enable)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  m_textCtrlCtrlVoltage->Enable(enable);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  m_choiceCtrlVoltage->Enable(enable);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  UpdateChoiceBoxes();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keywordtype">void</span> BusForm::EnableFaultFields(<span class="keywordtype">bool</span> enable)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  m_choiceFaultType->Enable(enable);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  m_choiceFaultPlace->Enable(enable);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  m_textCtrlFaultReactance->Enable(enable);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  m_textCtrlFaultResistance->Enable(enable);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_staticTextPU_1->Enable(enable);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  m_staticTextPU_2->Enable(enable);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  UpdateChoiceBoxes();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="keywordtype">void</span> BusForm::EnableStabFaultFields(<span class="keywordtype">bool</span> enable)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  m_textCtrlStabFaultTime->Enable(enable);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  m_textCtrlStabFaultLength->Enable(enable);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  m_staticTextS_1->Enable(enable);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  m_staticTextS_2->Enable(enable);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  m_textCtrlStabFaultReactance->Enable(enable);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  m_textCtrlStabFaultResistance->Enable(enable);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  m_staticTextPU_3->Enable(enable);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  m_staticTextPU_4->Enable(enable);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="keywordtype">void</span> BusForm::UpdateChoiceBoxes()</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">switch</span>(m_choiceFaultType->GetSelection()) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">case</span> 0: <span class="comment">// three-phase</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  m_choiceFaultPlace->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">case</span> 1: <span class="comment">// line-to-line</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">case</span> 2: <span class="comment">// double line-to-line</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span>(m_checkBoxFault->GetValue()) m_choiceFaultPlace->Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  m_choiceFaultPlace->SetString(0, _(<span class="stringliteral">"Lines AB"</span>));</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_choiceFaultPlace->SetString(1, _(<span class="stringliteral">"Lines BC"</span>));</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_choiceFaultPlace->SetString(2, _(<span class="stringliteral">"Lines CA"</span>));</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">case</span> 3: <span class="comment">// line-to-ground</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(m_checkBoxFault->GetValue()) m_choiceFaultPlace->Enable(<span class="keyword">true</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  m_choiceFaultPlace->SetString(0, _(<span class="stringliteral">"Line A"</span>));</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  m_choiceFaultPlace->SetString(1, _(<span class="stringliteral">"Line B"</span>));</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  m_choiceFaultPlace->SetString(2, _(<span class="stringliteral">"Line C"</span>));</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">switch</span>(m_choiceNomVoltage->GetSelection()) {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  m_choiceCtrlVoltage->SetString(1, _(<span class="stringliteral">"V"</span>));</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  m_choiceCtrlVoltage->SetString(1, _(<span class="stringliteral">"kV"</span>));</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> }</div><div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00062">PowerElement.h:62</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d">FAULT_LINE_GROUND</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00059">PowerElement.h:59</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00030">PowerElement.h:30</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00031">PowerElement.h:31</a></div></div> <div class="ttc" id="struct_bus_electrical_data_html"><div class="ttname"><a href="struct_bus_electrical_data.html">BusElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00024">Bus.h:24</a></div></div> <div class="ttc" id="_bus_form_8h_html"><div class="ttname"><a href="_bus_form_8h.html">BusForm.h</a></div></div> <div class="ttc" id="class_bus_form_base_html"><div class="ttname"><a href="class_bus_form_base.html">BusFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00049">ElementForm.h:49</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="_bus_8h_html"><div class="ttname"><a href="_bus_8h.html">Bus.h</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00060">PowerElement.h:60</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00057">PowerElement.h:57</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00056">PowerElement.h:56</a></div></div> diff --git a/docs/doxygen/html/_bus_form_8h_source.html b/docs/doxygen/html/_bus_form_8h_source.html index 4278bd7..4f4106d 100644 --- a/docs/doxygen/html/_bus_form_8h_source.html +++ b/docs/doxygen/html/_bus_form_8h_source.html @@ -90,7 +90,7 @@ $(document).ready(function(){initNavTree('_bus_form_8h_source.html','');}); <div class="contents"> <a href="_bus_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef BUSFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define BUSFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">class </span><a class="code" href="class_bus.html">Bus</a>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="class_bus_form.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="class_bus_form.html">BusForm</a> : <span class="keyword">public</span> <a class="code" href="class_bus_form_base.html">BusFormBase</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="class_bus_form.html">BusForm</a>(wxWindow* parent, <a class="code" href="class_bus.html">Bus</a>* bus);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_bus_form.html">BusForm</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFaultTypeChoice(wxCommandEvent& event);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnControlledVoltageClick(wxCommandEvent& event);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnInsertFaultClick(wxCommandEvent& event);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnInsertStabFaultClick(wxCommandEvent& event);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnNominalVoltageChoice(wxCommandEvent& event);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonCancelClick(wxCommandEvent& event);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonOKClick(wxCommandEvent& event);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> EnableCtrlVoltageFields(<span class="keywordtype">bool</span> enable = <span class="keyword">true</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> EnableFaultFields(<span class="keywordtype">bool</span> enable = <span class="keyword">true</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> EnableStabFaultFields(<span class="keywordtype">bool</span> enable = <span class="keyword">true</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateChoiceBoxes();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="class_bus.html">Bus</a>* m_bus = NULL;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#endif // BUSFORM_H</span></div><div class="ttc" id="class_bus_form_html"><div class="ttname"><a href="class_bus_form.html">BusForm</a></div><div class="ttdoc">Form to edit the bus power data. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_form_8h_source.html#l00031">BusForm.h:31</a></div></div> <div class="ttc" id="class_bus_form_base_html"><div class="ttname"><a href="class_bus_form_base.html">BusFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00049">ElementForm.h:49</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_capacitor_8cpp_source.html b/docs/doxygen/html/_capacitor_8cpp_source.html index 14bd837..e97535d 100644 --- a/docs/doxygen/html/_capacitor_8cpp_source.html +++ b/docs/doxygen/html/_capacitor_8cpp_source.html @@ -88,9 +88,9 @@ $(document).ready(function(){initNavTree('_capacitor_8cpp_source.html','');}); <div class="title">Capacitor.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_reactive_shunt_element_form_8h.html">ReactiveShuntElementForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "Capacitor.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Capacitor::Capacitor() : <a class="code" href="class_shunt.html">Shunt</a>() {}</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> Capacitor::Capacitor(wxString name) : <a class="code" href="class_shunt.html">Shunt</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> Capacitor::~Capacitor() {}</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf"> 24</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf">Capacitor::AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_position = parentPt + wxPoint2DDouble(0.0, 100.0); <span class="comment">// Shifts the position to the down of the bus.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_width = 40;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_height = 30;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_rect = wxRect2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y - m_height / 2.0, m_width, m_height);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_pointList.push_back(parentPt);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -m_height / 2.0 - 10.0));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -m_height / 2.0));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_inserted = <span class="keyword">true</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_switchRect.push_back(genRect); <span class="comment">// Push a general rectangle.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  UpdateSwitches();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_capacitor.html#a94d378c922467214b394931ec0eb01c8"> 55</a></span> <span class="keywordtype">void</span> <a class="code" href="class_capacitor.html#a94d378c922467214b394931ec0eb01c8">Capacitor::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword"></span>{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  elementColour = m_offlineElementColour;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  std::vector<wxPoint2DDouble> capPts;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  capPts.push_back(wxPoint2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y - m_height / 2.0));</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  capPts.push_back(wxPoint2DDouble(m_position.m_x + m_width / 2.0, m_position.m_y - m_height / 2.0));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  capPts.push_back(wxPoint2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y - m_height / 2.0 + 10.0));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  capPts.push_back(wxPoint2DDouble(m_position.m_x + m_width / 2.0, m_position.m_y - m_height / 2.0 + 10.0));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  glPushMatrix();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  DrawLine(capPts, GL_LINES);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.0));</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  glPopMatrix();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Draw node selection.</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// Draw Capacitor (layer 2).</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  glLineWidth(1.5);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  DrawSwitches();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  glPushMatrix();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  DrawLine(capPts, GL_LINES);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.0));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  glPopMatrix();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="class_capacitor.html#a2c3f0949c2b791c6a0b69866e9aaff7a"> 115</a></span> <span class="keywordtype">void</span> <a class="code" href="class_capacitor.html#a2c3f0949c2b791c6a0b69866e9aaff7a">Capacitor::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_angle += rotAngle;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_pointList[2] = RotateAtPosition(m_pointList[2], rotAngle);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_pointList[3] = RotateAtPosition(m_pointList[3], rotAngle);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="class_capacitor.html#a05d5517b64dd8a8888817ca28b72294d"> 127</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_capacitor.html#a05d5517b64dd8a8888817ca28b72294d">Capacitor::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit Capacitor"</span>));</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="class_capacitor.html#a994039e59a8ae0ec3fe7cf7f5b66e4e5"> 134</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_capacitor.html#a994039e59a8ae0ec3fe7cf7f5b66e4e5">Capacitor::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keyword"></span>{</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  wxPoint2DDouble ptR = RotateAtPosition(position, -m_angle);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="class_capacitor.html#a6b06adb1ef3545b220e0b94ee6210b7a"> 140</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_capacitor.html#a6b06adb1ef3545b220e0b94ee6210b7a">Capacitor::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword"></span>{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> RotatedRectanglesIntersects(m_rect, rect, m_angle, 0.0);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="class_capacitor.html#a459b1bbdb153bb9720176661e2960ea6"> 145</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_capacitor.html#a459b1bbdb153bb9720176661e2960ea6">Capacitor::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>* capacitorForm = <span class="keyword">new</span> <a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  capacitorForm->SetTitle(_(<span class="stringliteral">"Capacitor"</span>));</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span>(capacitorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  capacitorForm->Destroy();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  capacitorForm->Destroy();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> Capacitor::GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  data.reactivePower = data.reactivePower / systemPowerBase;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="class_capacitor.html#a422e353b594ac6e4ef34e1f613f7d580"> 180</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_capacitor.html#a422e353b594ac6e4ef34e1f613f7d580">Capacitor::GetCopy</a>()</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* copy = <span class="keyword">new</span> <a class="code" href="class_capacitor.html">Capacitor</a>();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="class_capacitor.html#a00e808708e16b87c80fc650e5710b84e"> 187</a></span> wxString <a class="code" href="class_capacitor.html#a00e808708e16b87c80fc650e5710b84e">Capacitor::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keyword"></span>{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// TODO: Avoid reactive power calculation.</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span>(!m_online)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  reactivePower = 0.0;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  std::complex<double> v = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  reactivePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_reactive_shunt_element_form_8h.html">ReactiveShuntElementForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_capacitor_8h.html">Capacitor.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Capacitor::Capacitor() : <a class="code" href="class_shunt.html">Shunt</a>() {}</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> Capacitor::Capacitor(wxString name) : <a class="code" href="class_shunt.html">Shunt</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> Capacitor::~Capacitor() {}</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf"> 24</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf">Capacitor::AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_position = parentPt + wxPoint2DDouble(0.0, 100.0); <span class="comment">// Shifts the position to the down of the bus.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_width = 40;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_height = 30;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_rect = wxRect2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y - m_height / 2.0, m_width, m_height);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_pointList.push_back(parentPt);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -m_height / 2.0 - 10.0));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -m_height / 2.0));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_inserted = <span class="keyword">true</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_switchRect.push_back(genRect); <span class="comment">// Push a general rectangle.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  UpdateSwitches();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_capacitor.html#a94d378c922467214b394931ec0eb01c8"> 55</a></span> <span class="keywordtype">void</span> <a class="code" href="class_capacitor.html#a94d378c922467214b394931ec0eb01c8">Capacitor::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword"></span>{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  elementColour = m_offlineElementColour;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  std::vector<wxPoint2DDouble> capPts;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  capPts.push_back(wxPoint2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y - m_height / 2.0));</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  capPts.push_back(wxPoint2DDouble(m_position.m_x + m_width / 2.0, m_position.m_y - m_height / 2.0));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  capPts.push_back(wxPoint2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y - m_height / 2.0 + 10.0));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  capPts.push_back(wxPoint2DDouble(m_position.m_x + m_width / 2.0, m_position.m_y - m_height / 2.0 + 10.0));</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  glPushMatrix();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  DrawLine(capPts, GL_LINES);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.0));</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  glPopMatrix();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Draw node selection.</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="comment">// Draw Capacitor (layer 2).</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  glLineWidth(1.5);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  DrawSwitches();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  glPushMatrix();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  DrawLine(capPts, GL_LINES);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.0));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  glPopMatrix();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="class_capacitor.html#a2c3f0949c2b791c6a0b69866e9aaff7a"> 115</a></span> <span class="keywordtype">void</span> <a class="code" href="class_capacitor.html#a2c3f0949c2b791c6a0b69866e9aaff7a">Capacitor::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_angle += rotAngle;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_pointList[2] = RotateAtPosition(m_pointList[2], rotAngle);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_pointList[3] = RotateAtPosition(m_pointList[3], rotAngle);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="class_capacitor.html#a05d5517b64dd8a8888817ca28b72294d"> 127</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_capacitor.html#a05d5517b64dd8a8888817ca28b72294d">Capacitor::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit Capacitor"</span>));</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="class_capacitor.html#a994039e59a8ae0ec3fe7cf7f5b66e4e5"> 134</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_capacitor.html#a994039e59a8ae0ec3fe7cf7f5b66e4e5">Capacitor::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keyword"></span>{</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  wxPoint2DDouble ptR = RotateAtPosition(position, -m_angle);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="class_capacitor.html#a6b06adb1ef3545b220e0b94ee6210b7a"> 140</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_capacitor.html#a6b06adb1ef3545b220e0b94ee6210b7a">Capacitor::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="keyword"></span>{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> RotatedRectanglesIntersects(m_rect, rect, m_angle, 0.0);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="class_capacitor.html#a459b1bbdb153bb9720176661e2960ea6"> 145</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_capacitor.html#a459b1bbdb153bb9720176661e2960ea6">Capacitor::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>* capacitorForm = <span class="keyword">new</span> <a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  capacitorForm->SetTitle(_(<span class="stringliteral">"Capacitor"</span>));</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">if</span>(capacitorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  capacitorForm->Destroy();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  capacitorForm->Destroy();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> Capacitor::GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  data.reactivePower = data.reactivePower / systemPowerBase;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="class_capacitor.html#a422e353b594ac6e4ef34e1f613f7d580"> 180</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_capacitor.html#a422e353b594ac6e4ef34e1f613f7d580">Capacitor::GetCopy</a>()</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* copy = <span class="keyword">new</span> <a class="code" href="class_capacitor.html">Capacitor</a>();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="class_capacitor.html#a00e808708e16b87c80fc650e5710b84e"> 187</a></span> wxString <a class="code" href="class_capacitor.html#a00e808708e16b87c80fc650e5710b84e">Capacitor::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keyword"></span>{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="comment">// TODO: Avoid reactive power calculation.</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span>(!m_online)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  reactivePower = 0.0;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  std::complex<double> v = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  reactivePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> <div class="ttc" id="class_capacitor_html_a459b1bbdb153bb9720176661e2960ea6"><div class="ttname"><a href="class_capacitor.html#a459b1bbdb153bb9720176661e2960ea6">Capacitor::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8cpp_source.html#l00145">Capacitor.cpp:145</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_capacitor_html_a05d5517b64dd8a8888817ca28b72294d"><div class="ttname"><a href="class_capacitor.html#a05d5517b64dd8a8888817ca28b72294d">Capacitor::GetContextMenu</a></div><div class="ttdeci">virtual bool GetContextMenu(wxMenu &menu)</div><div class="ttdoc">Get the element contex menu. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8cpp_source.html#l00127">Capacitor.cpp:127</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00052">Element.h:52</a></div></div> <div class="ttc" id="class_capacitor_html_a2c3f0949c2b791c6a0b69866e9aaff7a"><div class="ttname"><a href="class_capacitor.html#a2c3f0949c2b791c6a0b69866e9aaff7a">Capacitor::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8cpp_source.html#l00115">Capacitor.cpp:115</a></div></div> @@ -100,17 +100,18 @@ $(document).ready(function(){initNavTree('_capacitor_8cpp_source.html','');}); <div class="ttc" id="class_capacitor_html_a422e353b594ac6e4ef34e1f613f7d580"><div class="ttname"><a href="class_capacitor.html#a422e353b594ac6e4ef34e1f613f7d580">Capacitor::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8cpp_source.html#l00180">Capacitor.cpp:180</a></div></div> <div class="ttc" id="class_capacitor_html_a994039e59a8ae0ec3fe7cf7f5b66e4e5"><div class="ttname"><a href="class_capacitor.html#a994039e59a8ae0ec3fe7cf7f5b66e4e5">Capacitor::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8cpp_source.html#l00134">Capacitor.cpp:134</a></div></div> <div class="ttc" id="class_capacitor_html_a6b06adb1ef3545b220e0b94ee6210b7a"><div class="ttname"><a href="class_capacitor.html#a6b06adb1ef3545b220e0b94ee6210b7a">Capacitor::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8cpp_source.html#l00140">Capacitor.cpp:140</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="class_capacitor_html_a94d378c922467214b394931ec0eb01c8"><div class="ttname"><a href="class_capacitor.html#a94d378c922467214b394931ec0eb01c8">Capacitor::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8cpp_source.html#l00055">Capacitor.cpp:55</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> <div class="ttc" id="class_element_html_ac38d6707d08cb5c057032aa94b511a62"><div class="ttname"><a href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">Element::AddChild</a></div><div class="ttdeci">virtual void AddChild(Element *child)</div><div class="ttdoc">Add a child to the child list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00353">Element.cpp:353</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00040">PowerElement.h:40</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> -<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00031">Capacitor.h:31</a></div></div> +<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdoc">Class to manage color of OpenGL. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> +<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdoc">Shunt capactior power element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00038">Capacitor.h:38</a></div></div> <div class="ttc" id="class_element_html_a536ad18a847dcc979c984b3cb287f238"><div class="ttname"><a href="class_element.html#a536ad18a847dcc979c984b3cb287f238">Element::GetPosition</a></div><div class="ttdeci">wxPoint2DDouble GetPosition() const</div><div class="ttdoc">Get the element position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00187">Element.h:187</a></div></div> -<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00024">Shunt.h:24</a></div></div> +<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdoc">Abstract class for shunt power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00031">Shunt.h:31</a></div></div> <div class="ttc" id="class_capacitor_html_a00e808708e16b87c80fc650e5710b84e"><div class="ttname"><a href="class_capacitor.html#a00e808708e16b87c80fc650e5710b84e">Capacitor::GetTipText</a></div><div class="ttdeci">virtual wxString GetTipText() const</div><div class="ttdoc">Get the tip text. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8cpp_source.html#l00187">Capacitor.cpp:187</a></div></div> +<div class="ttc" id="_capacitor_8h_html"><div class="ttname"><a href="_capacitor_8h.html">Capacitor.h</a></div></div> <div class="ttc" id="class_capacitor_html_ace755e5bc3cc72b491ce31c24c54a5cf"><div class="ttname"><a href="class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf">Capacitor::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8cpp_source.html#l00024">Capacitor.cpp:24</a></div></div> <div class="ttc" id="class_reactive_shunt_element_form_html"><div class="ttname"><a href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a></div><div class="ttdoc">Form to edit the reactive shunt element power data. </div><div class="ttdef"><b>Definition:</b> <a href="_reactive_shunt_element_form_8h_source.html#l00034">ReactiveShuntElementForm.h:34</a></div></div> <div class="ttc" id="struct_capacitor_electrical_data_html"><div class="ttname"><a href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00025">Capacitor.h:25</a></div></div> diff --git a/docs/doxygen/html/_capacitor_8h.html b/docs/doxygen/html/_capacitor_8h.html new file mode 100644 index 0000000..88cfe9e --- /dev/null +++ b/docs/doxygen/html/_capacitor_8h.html @@ -0,0 +1,117 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/Capacitor.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_capacitor_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">Capacitor.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_shunt_8h_source.html">Shunt.h</a>"</code><br /> +</div> +<p><a href="_capacitor_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_capacitor.html">Capacitor</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="class_shunt.html" title="Abstract class for shunt power elements. ">Shunt</a> capactior power element. <a href="class_capacitor.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_capacitor_8h.html">Capacitor.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_capacitor_8h_source.html b/docs/doxygen/html/_capacitor_8h_source.html index 179289e..311d0db 100644 --- a/docs/doxygen/html/_capacitor_8h_source.html +++ b/docs/doxygen/html/_capacitor_8h_source.html @@ -88,11 +88,12 @@ $(document).ready(function(){initNavTree('_capacitor_8h_source.html','');}); <div class="title">Capacitor.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef CAPACITOR_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CAPACITOR_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "Shunt.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="struct_capacitor_electrical_data.html"> 25</a></span> <span class="keyword">struct </span><a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString name;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> reactivePower = 100.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> };</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="class_capacitor.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="class_capacitor.html">Capacitor</a> : <span class="keyword">public</span> <a class="code" href="class_shunt.html">Shunt</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="class_capacitor.html">Capacitor</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_capacitor.html">Capacitor</a>(wxString name);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ~<a class="code" href="class_capacitor.html">Capacitor</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> AddParent(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Intersects(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Rotate(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> GetElectricalData() { <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> m_electricalData;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#endif // CAPACITOR_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_capacitor_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef CAPACITOR_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CAPACITOR_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_shunt_8h.html">Shunt.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="struct_capacitor_electrical_data.html"> 25</a></span> <span class="keyword">struct </span><a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString name;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> reactivePower = 100.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> };</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_capacitor.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_capacitor.html">Capacitor</a> : <span class="keyword">public</span> <a class="code" href="class_shunt.html">Shunt</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_capacitor.html">Capacitor</a>();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_capacitor.html">Capacitor</a>(wxString name);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  ~<a class="code" href="class_capacitor.html">Capacitor</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> AddParent(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Intersects(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Rotate(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> GetElectricalData() { <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> m_electricalData;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> };</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#endif // CAPACITOR_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="_shunt_8h_html"><div class="ttname"><a href="_shunt_8h.html">Shunt.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220cca"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a></div><div class="ttdeci">ElectricalUnit</div><div class="ttdoc">Electrical units. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00028">PowerElement.h:28</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> -<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00031">Capacitor.h:31</a></div></div> -<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00024">Shunt.h:24</a></div></div> +<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdoc">Shunt capactior power element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00038">Capacitor.h:38</a></div></div> +<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdoc">Abstract class for shunt power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00031">Shunt.h:31</a></div></div> <div class="ttc" id="class_reactive_shunt_element_form_html"><div class="ttname"><a href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a></div><div class="ttdoc">Form to edit the reactive shunt element power data. </div><div class="ttdef"><b>Definition:</b> <a href="_reactive_shunt_element_form_8h_source.html#l00034">ReactiveShuntElementForm.h:34</a></div></div> <div class="ttc" id="struct_capacitor_electrical_data_html"><div class="ttname"><a href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00025">Capacitor.h:25</a></div></div> </div><!-- fragment --></div><!-- contents --> @@ -100,7 +101,7 @@ $(document).ready(function(){initNavTree('_capacitor_8h_source.html','');}); <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>Capacitor.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_capacitor_8h.html">Capacitor.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_chart_view_8cpp_source.html b/docs/doxygen/html/_chart_view_8cpp_source.html index c531030..43c86f5 100644 --- a/docs/doxygen/html/_chart_view_8cpp_source.html +++ b/docs/doxygen/html/_chart_view_8cpp_source.html @@ -88,10 +88,11 @@ $(document).ready(function(){initNavTree('_chart_view_8cpp_source.html','');}); <div class="title">ChartView.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_chart_view_8h.html">ChartView.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "ElementPlotData.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> ChartView::ChartView(wxWindow* parent, std::vector<ElementPlotData> epdList, std::vector<double> time)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  : <a class="code" href="class_chart_view_base.html">ChartViewBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_epdList = epdList;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_time = time;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_xAxisValues = time;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_menuItemShowGrid->Check(m_hideGrid ? <span class="keyword">false</span> : <span class="keyword">true</span>);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_menuItemShowLabel->Check(m_showLeg);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_menuItemShowCoordinates->Check(m_showCoords);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_menuItemDarkTheme->Check(m_darkTheme);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// Create color property.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_pgPropColor = m_pgMgr->Insert(m_pgPropLineProp, 1, <span class="keyword">new</span> wxColourProperty(_(<span class="stringliteral">"Color"</span>)));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_pgPropColor->SetEditor(wxT(<span class="stringliteral">"ChoiceAndButton"</span>));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_pgPropColor->SetValue(static_cast<wxVariant>(*wxBLACK));</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="comment">// Set margins and axis limit to composed mode.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_pgPropMargins->SetValue(wxT(<span class="stringliteral">"<composed>"</span>));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_pgMgr->Collapse(m_pgPropMargins);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_pgPropAxisLimit->SetValue(wxT(<span class="stringliteral">"<composed>"</span>));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_pgMgr->Collapse(m_pgPropAxisLimit);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// Add line type choices</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Solid"</span>), wxPENSTYLE_SOLID);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Dot"</span>), wxPENSTYLE_DOT);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Dash"</span>), wxPENSTYLE_SHORT_DASH);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Dot and dash"</span>), wxPENSTYLE_DOT_DASH);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Cross"</span>), wxPENSTYLE_CROSS_HATCH);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Driagonal cross"</span>), wxPENSTYLE_CROSSDIAG_HATCH);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  SetMPWindow();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  GetSizer()->Add(m_mpWindow, 1, wxEXPAND, WXC_FROM_DIP(5));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  SetTreectrl();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  Layout();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  SetInitialSize();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  BuildColourList();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> ChartView::~ChartView() {}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">void</span> ChartView::SetMPWindow()</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_mpWindow = <span class="keyword">new</span> mpWindow(<span class="keyword">this</span>, wxID_ANY);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_mpWindow->SetDoubleBuffered(<span class="keyword">true</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_mpWindow->SetMargins(20, 10, 40, 60);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_xaxis = <span class="keyword">new</span> mpScaleX(<span class="stringliteral">""</span>, mpALIGN_BOTTOM, <span class="keyword">true</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_yaxis = <span class="keyword">new</span> mpScaleY(<span class="stringliteral">""</span>, mpALIGN_LEFT, <span class="keyword">true</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_xaxis->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_yaxis->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_xaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_yaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_leg = <span class="keyword">new</span> mpInfoLegend(wxRect(200, 20, 40, 40), wxWHITE_BRUSH);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_coords = <span class="keyword">new</span> mpInfoCoords(wxRect(0, 0, 0, 0), wxWHITE_BRUSH);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_chartTitle = <span class="keyword">new</span> mpText(<span class="stringliteral">""</span>, 50, 0);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  wxFont chartTitleFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_chartTitle->SetFont(chartTitleFont);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_mpWindow->AddLayer(m_xaxis);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_mpWindow->AddLayer(m_yaxis);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_mpWindow->AddLayer(m_leg);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_mpWindow->AddLayer(m_coords);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_mpWindow->AddLayer(m_chartTitle);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_leg->SetVisible(m_showLeg);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_coords->SetVisible(m_showCoords);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_mpWindow->EnableDoubleBuffer(<span class="keyword">true</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_mpWindow->LockAspect(<span class="keyword">false</span>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  Fit();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keywordtype">void</span> ChartView::SetTreectrl()</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  wxTreeItemId rootID = m_treeCtrl->AddRoot(wxT(<span class="stringliteral">"root"</span>));</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_treeTimeID = m_treeCtrl->AppendItem(rootID, _(<span class="stringliteral">"Time"</span>));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_treeCtrl->SetItemTextColour(m_treeTimeID, *wxRED);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">bool</span> firstElement[ElementPlotData::NUM_ELEMENTS];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < ElementPlotData::NUM_ELEMENTS; ++i) firstElement[i] = <span class="keyword">true</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  wxString rootElementName[ElementPlotData::NUM_ELEMENTS];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  rootElementName[ElementPlotData::CT_BUS] = _(<span class="stringliteral">"Bus"</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  rootElementName[ElementPlotData::CT_IND_MOTOR] = _(<span class="stringliteral">"Induction motor"</span>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  rootElementName[ElementPlotData::CT_LINE] = _(<span class="stringliteral">"Line"</span>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  rootElementName[ElementPlotData::CT_LOAD] = _(<span class="stringliteral">"Load"</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  rootElementName[ElementPlotData::CT_SHUNT_CAPACITOR] = _(<span class="stringliteral">"Capacitor"</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  rootElementName[ElementPlotData::CT_SHUNT_INDUCTOR] = _(<span class="stringliteral">"Inductor"</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  rootElementName[ElementPlotData::CT_SYNC_COMPENSATOR] = _(<span class="stringliteral">"Synchronous compensator"</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  rootElementName[ElementPlotData::CT_SYNC_GENERATOR] = _(<span class="stringliteral">"Synchronous generator"</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  rootElementName[ElementPlotData::CT_TRANSFORMER] = _(<span class="stringliteral">"Transformer"</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  rootElementName[ElementPlotData::CT_TEST] = _(<span class="stringliteral">"Test"</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  wxTreeItemId rootItemID[ElementPlotData::NUM_ELEMENTS];</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_epdList.begin(), itEnd = m_epdList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a> data = *it;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  ElementPlotData::CurveType curveType = data.GetCurveType();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(firstElement[curveType]) {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  rootItemID[curveType] = m_treeCtrl->AppendItem(rootID, rootElementName[curveType]);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  firstElement[curveType] = <span class="keyword">false</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  wxTreeItemId itemID = m_treeCtrl->AppendItem(rootItemID[curveType], data.GetName());</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < data.GetElementDataNumber(); ++i) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_treeCtrl->AppendItem(itemID, data.GetDataName(i), -1, -1, data.GetPlotData(i));</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keywordtype">void</span> ChartView::OnPropertyGridChange(wxPropertyGridEvent& event)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">bool</span> fit = <span class="keyword">false</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(m_treeCtrl->GetSelection()) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(<a class="code" href="class_plot_data.html">PlotData</a>* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(m_treeCtrl->GetSelection()))) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Draw"</span>)) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">bool</span> isPlotting = m_pgPropDraw->GetValue();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  data->SetPlot(isPlotting);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(isPlotting) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  wxColour colour = GetNextColour();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  data->SetColour(colour);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  m_pgPropColor->SetValue(static_cast<wxVariant>(colour));</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_treeCtrl->SetItemBold(m_treeCtrl->GetSelection(), <span class="keyword">true</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_treeCtrl->SetItemBold(m_treeCtrl->GetSelection(), <span class="keyword">false</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  fit = <span class="keyword">true</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Color"</span>)) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  wxColour colour;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  colour << m_pgPropColor->GetValue();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  data->SetColour(colour);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Thickness"</span>)) {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  data->SetThick(m_pgProplineThick->GetValue().GetInteger());</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Type"</span>)) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  data->SetPenType(static_cast<wxPenStyle>(m_pgProplineType->GetValue().GetInteger()));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Axis"</span>)) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordtype">int</span> axis = m_pgProplineAxis->GetValue().GetInteger();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span>(axis == 1) { <span class="comment">// Y</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// All lines to Y axis</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  AllToYAxis(m_treeCtrl->GetRootItem());</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">// curva selecionada para o eixo X</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_treeCtrl->SetItemTextColour(m_treeCtrl->GetSelection(), *wxRED);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_xAxisValues = data->GetValues();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  data->SetAxis(axis);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  fit = <span class="keyword">true</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Margins"</span>)) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_mpWindow->SetMargins(m_pgPropMarginsUp->GetValue().GetLong(), m_pgPropMarginsRight->GetValue().GetLong(),</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  m_pgPropMarginsBot->GetValue().GetLong(), m_pgPropMarginsLeft->GetValue().GetLong());</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  m_mpWindow->UpdateAll();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Axis limit"</span>)) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  m_mpWindow->Fit(m_pgPropXMin->GetValue().GetDouble(), m_pgPropXMax->GetValue().GetDouble(),</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  m_pgPropYMin->GetValue().GetDouble(), m_pgPropYMax->GetValue().GetDouble());</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  m_mpWindow->UpdateAll();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  UpdatePlot(fit);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="keywordtype">void</span> ChartView::OnMenuDarkThemeClick(wxCommandEvent& event)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  m_darkTheme = <span class="keyword">event</span>.IsChecked();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  wxColour grey(96, 96, 96);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span>(m_darkTheme) {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  m_mpWindow->SetColourTheme(*wxBLACK, *wxWHITE, grey);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  m_leg->SetBrush(*wxBLACK_BRUSH);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_coords->SetBrush(*wxBLACK_BRUSH);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  m_mpWindow->SetColourTheme(*wxWHITE, *wxBLACK, grey);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  m_leg->SetBrush(*wxWHITE_BRUSH);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  m_coords->SetBrush(*wxWHITE_BRUSH);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  m_mpWindow->UpdateAll();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="keywordtype">void</span> ChartView::OnMenuSaveImageClick(wxCommandEvent& event)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">int</span> x = m_mpWindow->GetScreenPosition().x;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordtype">int</span> y = m_mpWindow->GetScreenPosition().y;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordtype">int</span> width = m_mpWindow->GetSize().GetWidth();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordtype">int</span> height = m_mpWindow->GetSize().GetHeight();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  wxScreenDC dcScreen;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  wxBitmap screenshot(width, height);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  wxMemoryDC memDC;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  memDC.SelectObject(screenshot);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  memDC.Blit(0, 0, width, height, &dcScreen, x, y);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  memDC.SelectObject(wxNullBitmap);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  wxFileDialog saveFileDialog(</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keyword">this</span>, _(<span class="stringliteral">"Save image"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>,</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="stringliteral">"PNG image file (*.png)|*.png|Bitmap image file (*.bmp)|*.bmp|JPEG image file (*.jpg)|*.jpg"</span>,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  wxFileName imagePath(saveFileDialog.GetPath());</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  wxBitmapType imageType = wxBITMAP_TYPE_BMP;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(imagePath.GetExt() == <span class="stringliteral">"png"</span>)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  imageType = wxBITMAP_TYPE_PNG;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(imagePath.GetExt() == <span class="stringliteral">"jpg"</span>)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  imageType = wxBITMAP_TYPE_JPEG;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  screenshot.SaveFile(imagePath.GetFullPath(), imageType);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="keywordtype">void</span> ChartView::OnMenuSendClipClick(wxCommandEvent& event)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordtype">int</span> x = m_mpWindow->GetScreenPosition().x;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordtype">int</span> y = m_mpWindow->GetScreenPosition().y;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordtype">int</span> width = m_mpWindow->GetSize().GetWidth();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordtype">int</span> height = m_mpWindow->GetSize().GetHeight();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  wxScreenDC dcScreen;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  wxBitmap screenshot(width, height);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  wxMemoryDC memDC;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  memDC.SelectObject(screenshot);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  memDC.Blit(0, 0, width, height, &dcScreen, x, y);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  memDC.SelectObject(wxNullBitmap);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">if</span>(wxTheClipboard->Open()) {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  wxTheClipboard->SetData(<span class="keyword">new</span> wxBitmapDataObject(screenshot));</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  wxTheClipboard->Close();</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Chart send to clipboard"</span>), _(<span class="stringliteral">"Info"</span>), wxOK | wxICON_INFORMATION,</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  wxDefaultPosition);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to send to clipboard"</span>), _(<span class="stringliteral">"Error"</span>), wxOK | wxICON_ERROR,</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  wxDefaultPosition);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="keywordtype">void</span> ChartView::OnMenuShowCoordinatesClick(wxCommandEvent& event)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  m_showCoords = <span class="keyword">event</span>.IsChecked();</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  m_coords->SetVisible(m_showCoords);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  m_mpWindow->UpdateAll();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="keywordtype">void</span> ChartView::OnMenuShowGridClick(wxCommandEvent& event)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_hideGrid = <span class="keyword">event</span>.IsChecked() ? false : <span class="keyword">true</span>;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  m_xaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  m_yaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  m_mpWindow->UpdateAll();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="keywordtype">void</span> ChartView::OnMenuShowLabelClick(wxCommandEvent& event)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  m_showLeg = <span class="keyword">event</span>.IsChecked();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  m_leg->SetVisible(m_showLeg);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  m_mpWindow->UpdateAll();</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="keywordtype">void</span> ChartView::Fit()</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  m_mpWindow->Fit();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordtype">double</span> bBox[4];</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  m_mpWindow->GetBoundingBox(bBox);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  m_pgPropXMin->SetValue(bBox[0]);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_pgPropXMax->SetValue(bBox[1]);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  m_pgPropYMin->SetValue(bBox[2]);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  m_pgPropYMax->SetValue(bBox[3]);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keywordtype">void</span> ChartView::UpdatePlot(<span class="keywordtype">bool</span> fit)</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  wxRect legRect = m_leg->GetRectangle();</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  wxRect coordsRect = m_coords->GetRectangle();</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  m_mpWindow->DelAllLayers(<span class="keyword">true</span>, <span class="keyword">false</span>);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="comment">// GoAllTrees(treeCtrl_ChartSelection->GetRootItem());</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  UpdateAllPlots(m_treeCtrl->GetRootItem());</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  m_xaxis = <span class="keyword">new</span> mpScaleX(m_pgPropXLabel->GetValueAsString(), mpALIGN_BOTTOM, <span class="keyword">true</span>);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  m_yaxis = <span class="keyword">new</span> mpScaleY(m_pgPropYLabel->GetValueAsString(), mpALIGN_LEFT, <span class="keyword">true</span>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  m_leg = <span class="keyword">new</span> mpInfoLegend(legRect, wxWHITE_BRUSH);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  m_coords = <span class="keyword">new</span> mpInfoCoords(coordsRect, wxWHITE_BRUSH);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  m_xaxis->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  m_yaxis->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  m_xaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  m_yaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  mpText* chartTitle = <span class="keyword">new</span> mpText(m_pgPropChartTitle->GetValueAsString(), 50, 0);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  wxFont chartTitleFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  chartTitle->SetFont(chartTitleFont);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  m_mpWindow->AddLayer(m_xaxis);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  m_mpWindow->AddLayer(m_yaxis);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  m_mpWindow->AddLayer(m_leg);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  m_mpWindow->AddLayer(m_coords);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  m_mpWindow->AddLayer(chartTitle);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  m_leg->SetVisible(m_showLeg);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  m_coords->SetVisible(m_showCoords);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span>(fit) Fit();</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> </div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  wxColour grey(96, 96, 96);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">if</span>(m_darkTheme) {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  m_mpWindow->SetColourTheme(*wxBLACK, *wxWHITE, grey);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  m_leg->SetBrush(*wxBLACK_BRUSH);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  m_coords->SetBrush(*wxBLACK_BRUSH);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  m_mpWindow->SetColourTheme(*wxWHITE, *wxBLACK, grey);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  m_leg->SetBrush(*wxWHITE_BRUSH);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  m_coords->SetBrush(*wxWHITE_BRUSH);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="keywordtype">void</span> ChartView::OnTreeItemActivated(wxTreeEvent& event)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">if</span>(<a class="code" href="class_plot_data.html">PlotData</a>* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(event.GetItem()))) {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordtype">bool</span> isPlotting = data->IsPlot() ? false : <span class="keyword">true</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  data->SetPlot(isPlotting);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  m_pgPropDraw->SetValue(data->IsPlot());</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">if</span>(isPlotting) {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  wxColour colour = GetNextColour();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  data->SetColour(colour);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  m_pgPropColor->SetValue(static_cast<wxVariant>(colour));</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  m_treeCtrl->SetItemBold(m_treeCtrl->GetSelection(), <span class="keyword">true</span>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  m_treeCtrl->SetItemBold(m_treeCtrl->GetSelection(), <span class="keyword">false</span>);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  UpdatePlot(<span class="keyword">true</span>);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">if</span>(event.GetItem() == m_treeTimeID) {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  AllToYAxis(m_treeCtrl->GetRootItem());</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  m_treeCtrl->SetItemTextColour(m_treeTimeID, *wxRED);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  m_xAxisValues = m_time;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  UpdatePlot(<span class="keyword">true</span>);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="keywordtype">void</span> ChartView::OnTreeItemSelectionChanged(wxTreeEvent& event)</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span>(<a class="code" href="class_plot_data.html">PlotData</a>* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(event.GetItem()))) {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  m_pgPropDraw->SetValue(data->IsPlot());</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  wxVariant colour;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  colour << data->GetColour();</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  m_pgPropColor->SetValue(colour);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  m_pgProplineThick->SetValue(data->GetThick());</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  m_pgProplineType->SetValue(data->GetPenType());</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  m_pgProplineAxis->SetValue(data->GetAxis());</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="keywordtype">void</span> ChartView::BuildColourList()</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  m_colourList.push_back(wxColour(255, 0, 0));</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  m_colourList.push_back(wxColour(0, 0, 255));</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  m_colourList.push_back(wxColour(0, 255, 0));</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  m_colourList.push_back(wxColour(255, 128, 0));</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  m_colourList.push_back(wxColour(128, 0, 255));</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  m_colourList.push_back(wxColour(0, 255, 128));</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  m_colourList.push_back(wxColour(255, 255, 0));</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  m_colourList.push_back(wxColour(255, 0, 255));</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  m_colourList.push_back(wxColour(0, 255, 255));</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  m_colourList.push_back(wxColour(128, 255, 0));</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  m_colourList.push_back(wxColour(255, 0, 128));</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  m_colourList.push_back(wxColour(0, 128, 255));</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  m_colourList.push_back(wxColour(128, 128, 128));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  m_colourList.push_back(*wxBLACK);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  m_itColourList = --m_colourList.end();</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> wxColour ChartView::GetNextColour()</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">if</span>(*m_itColourList == *wxBLACK)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  m_itColourList = m_colourList.begin();</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  ++m_itColourList;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> </div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span> *m_itColourList;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> wxTreeItemId ChartView::AllToYAxis(wxTreeItemId root)</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  wxTreeItemIdValue cookie;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  wxTreeItemId item = m_treeCtrl->GetFirstChild(root, cookie);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  wxTreeItemId child;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">while</span>(item.IsOk()) {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  m_treeCtrl->SetItemTextColour(item, *wxBLACK);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">if</span>(<a class="code" href="class_plot_data.html">PlotData</a>* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(item))) data->SetAxis(0); <span class="comment">// X axis.</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span>(m_treeCtrl->ItemHasChildren(item)) {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  wxTreeItemId nextChild = AllToYAxis(item);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span>(nextChild.IsOk()) <span class="keywordflow">return</span> nextChild;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  item = m_treeCtrl->GetNextChild(root, cookie);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  wxTreeItemId dummyID;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">return</span> dummyID;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> }</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> wxTreeItemId ChartView::UpdateAllPlots(wxTreeItemId root)</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  wxTreeItemIdValue cookie;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  wxTreeItemId item = m_treeCtrl->GetFirstChild(root, cookie);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  wxTreeItemId child;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">while</span>(item.IsOk()) {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span>(<a class="code" href="class_plot_data.html">PlotData</a>* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(item))) {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">if</span>(data->IsPlot()) {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  wxString parentName = m_treeCtrl->GetItemText(m_treeCtrl->GetItemParent(item));</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  mpFXYVector* newLayer = <span class="keyword">new</span> mpFXYVector(data->GetName() + <span class="stringliteral">" ("</span> + parentName + <span class="stringliteral">")"</span>);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  newLayer->SetData(m_xAxisValues, data->GetValues());</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  newLayer->SetContinuity(<span class="keyword">true</span>);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  wxPen layerPen(data->GetColour(), data->GetThick(), data->GetPenType());</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  newLayer->SetPen(layerPen);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  newLayer->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  newLayer->ShowName(<span class="keyword">false</span>);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  m_mpWindow->AddLayer(newLayer);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">if</span>(m_treeCtrl->ItemHasChildren(item)) {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  wxTreeItemId nextChild = UpdateAllPlots(item);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">if</span>(nextChild.IsOk()) <span class="keywordflow">return</span> nextChild;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  item = m_treeCtrl->GetNextChild(root, cookie);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> </div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  wxTreeItemId dummyID;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">return</span> dummyID;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="keywordtype">void</span> ChartView::OnMenuExpCSVClick(wxCommandEvent& event)</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  wxFileDialog saveFileDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Save CSV file"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>, <span class="stringliteral">"CSV file (*.csv)|*.csv"</span>,</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  wxTextFile csvFile(saveFileDialog.GetPath());</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">if</span>(!csvFile.Create()) {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">if</span>(!csvFile.Open()) {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to open or create the selected file."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  csvFile.Open();</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">if</span>(csvFile.IsOpened()) {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  csvFile.Clear();</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  csvFile.AddLine(GetActiveCurvesCSV());</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  csvFile.Write();</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  csvFile.Close();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> wxString ChartView::GetActiveCurvesCSV()</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  std::vector<PlotData*> activePlotDataList;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  GetActivePlotData(m_treeCtrl->GetRootItem(), activePlotDataList);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> </div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  std::vector<double> xValues;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  wxString xName = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="comment">// Find X axis curve, if none is found, X is the m_time.</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordtype">bool</span> foundXAxis = <span class="keyword">false</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = activePlotDataList.begin(), itEnd = activePlotDataList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <a class="code" href="class_plot_data.html">PlotData</a>* data = *it;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">if</span>(data->GetAxis() == 1) {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  xValues = data->GetValues();</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  xName = data->GetName();</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  foundXAxis = <span class="keyword">true</span>;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  activePlotDataList.erase(it);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keyword">delete</span> data;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">if</span>(!foundXAxis) {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  xValues = m_time;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  xName = _(<span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="comment">// Build CSV text.</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  wxString csvText = xName + <span class="stringliteral">";"</span>;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = activePlotDataList.begin(), itEnd = activePlotDataList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <a class="code" href="class_plot_data.html">PlotData</a>* data = *it;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  csvText += data->GetName() + <span class="stringliteral">";"</span>;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  csvText[csvText.length() - 1] = <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < xValues.size(); ++i) {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  csvText += wxString::FromCDouble(xValues[i], 13) + <span class="stringliteral">";"</span>;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < activePlotDataList.size(); ++j) {</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordtype">double</span> value = 0.0;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">if</span>(i < activePlotDataList[j]->GetValues().size()) {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  value = activePlotDataList[j]->GetValues()[i];</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  csvText += wxString::FromCDouble(value, 13) + <span class="stringliteral">";"</span>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  csvText[csvText.length() - 1] = <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  }</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="comment">// Clear active plot data vector.</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = activePlotDataList.begin(); it != activePlotDataList.end(); ++it) {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keyword">delete</span>(*it);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  activePlotDataList.clear();</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">return</span> csvText;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> }</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> wxTreeItemId ChartView::GetActivePlotData(wxTreeItemId root, std::vector<PlotData*>& plotDataList)</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  wxTreeItemIdValue cookie;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  wxTreeItemId item = m_treeCtrl->GetFirstChild(root, cookie);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  wxTreeItemId child;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">while</span>(item.IsOk()) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">if</span>(<a class="code" href="class_plot_data.html">PlotData</a>* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(item))) {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">if</span>(data->IsPlot() || data->GetAxis() == 1) {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  wxString parentName = m_treeCtrl->GetItemText(m_treeCtrl->GetItemParent(item));</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> </div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <a class="code" href="class_plot_data.html">PlotData</a>* dataCopy = <span class="keyword">new</span> <a class="code" href="class_plot_data.html">PlotData</a>();</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  *dataCopy = *data;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  dataCopy->SetName(data->GetName() + <span class="stringliteral">" ("</span> + parentName + <span class="stringliteral">")"</span>);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  plotDataList.push_back(dataCopy);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  }</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">if</span>(m_treeCtrl->ItemHasChildren(item)) {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  wxTreeItemId nextChild = GetActivePlotData(item, plotDataList);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">if</span>(nextChild.IsOk()) <span class="keywordflow">return</span> nextChild;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  item = m_treeCtrl->GetNextChild(root, cookie);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  }</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span> </div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  wxTreeItemId dummyID;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">return</span> dummyID;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> }</div><div class="ttc" id="class_chart_view_base_html"><div class="ttname"><a href="class_chart_view_base.html">ChartViewBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_chart_view_base_8h_source.html#l00039">ChartViewBase.h:39</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_chart_view_8h.html">ChartView.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_element_plot_data_8h.html">ElementPlotData.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> ChartView::ChartView(wxWindow* parent, std::vector<ElementPlotData> epdList, std::vector<double> time)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  : <a class="code" href="class_chart_view_base.html">ChartViewBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_epdList = epdList;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_time = time;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_xAxisValues = time;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_menuItemShowGrid->Check(m_hideGrid ? <span class="keyword">false</span> : <span class="keyword">true</span>);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_menuItemShowLabel->Check(m_showLeg);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_menuItemShowCoordinates->Check(m_showCoords);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_menuItemDarkTheme->Check(m_darkTheme);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="comment">// Create color property.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_pgPropColor = m_pgMgr->Insert(m_pgPropLineProp, 1, <span class="keyword">new</span> wxColourProperty(_(<span class="stringliteral">"Color"</span>)));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_pgPropColor->SetEditor(wxT(<span class="stringliteral">"ChoiceAndButton"</span>));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_pgPropColor->SetValue(static_cast<wxVariant>(*wxBLACK));</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="comment">// Set margins and axis limit to composed mode.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_pgPropMargins->SetValue(wxT(<span class="stringliteral">"<composed>"</span>));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_pgMgr->Collapse(m_pgPropMargins);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_pgPropAxisLimit->SetValue(wxT(<span class="stringliteral">"<composed>"</span>));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_pgMgr->Collapse(m_pgPropAxisLimit);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// Add line type choices</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Solid"</span>), wxPENSTYLE_SOLID);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Dot"</span>), wxPENSTYLE_DOT);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Dash"</span>), wxPENSTYLE_SHORT_DASH);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Dot and dash"</span>), wxPENSTYLE_DOT_DASH);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Cross"</span>), wxPENSTYLE_CROSS_HATCH);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_pgProplineType->AddChoice(_(<span class="stringliteral">"Driagonal cross"</span>), wxPENSTYLE_CROSSDIAG_HATCH);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  SetMPWindow();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  GetSizer()->Add(m_mpWindow, 1, wxEXPAND, WXC_FROM_DIP(5));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  SetTreectrl();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  Layout();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  SetInitialSize();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  BuildColourList();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> ChartView::~ChartView() {}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">void</span> ChartView::SetMPWindow()</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_mpWindow = <span class="keyword">new</span> mpWindow(<span class="keyword">this</span>, wxID_ANY);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_mpWindow->SetDoubleBuffered(<span class="keyword">true</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_mpWindow->SetMargins(20, 10, 40, 60);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_xaxis = <span class="keyword">new</span> mpScaleX(<span class="stringliteral">""</span>, mpALIGN_BOTTOM, <span class="keyword">true</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_yaxis = <span class="keyword">new</span> mpScaleY(<span class="stringliteral">""</span>, mpALIGN_LEFT, <span class="keyword">true</span>);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_xaxis->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_yaxis->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_xaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_yaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_leg = <span class="keyword">new</span> mpInfoLegend(wxRect(200, 20, 40, 40), wxWHITE_BRUSH);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_coords = <span class="keyword">new</span> mpInfoCoords(wxRect(0, 0, 0, 0), wxWHITE_BRUSH);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_chartTitle = <span class="keyword">new</span> mpText(<span class="stringliteral">""</span>, 50, 0);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  wxFont chartTitleFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_chartTitle->SetFont(chartTitleFont);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_mpWindow->AddLayer(m_xaxis);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_mpWindow->AddLayer(m_yaxis);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_mpWindow->AddLayer(m_leg);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_mpWindow->AddLayer(m_coords);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_mpWindow->AddLayer(m_chartTitle);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_leg->SetVisible(m_showLeg);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_coords->SetVisible(m_showCoords);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_mpWindow->EnableDoubleBuffer(<span class="keyword">true</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_mpWindow->LockAspect(<span class="keyword">false</span>);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  Fit();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keywordtype">void</span> ChartView::SetTreectrl()</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  wxTreeItemId rootID = m_treeCtrl->AddRoot(wxT(<span class="stringliteral">"root"</span>));</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_treeTimeID = m_treeCtrl->AppendItem(rootID, _(<span class="stringliteral">"Time"</span>));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_treeCtrl->SetItemTextColour(m_treeTimeID, *wxRED);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">bool</span> firstElement[ElementPlotData::NUM_ELEMENTS];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < ElementPlotData::NUM_ELEMENTS; ++i) firstElement[i] = <span class="keyword">true</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  wxString rootElementName[ElementPlotData::NUM_ELEMENTS];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  rootElementName[ElementPlotData::CT_BUS] = _(<span class="stringliteral">"Bus"</span>);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  rootElementName[ElementPlotData::CT_IND_MOTOR] = _(<span class="stringliteral">"Induction motor"</span>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  rootElementName[ElementPlotData::CT_LINE] = _(<span class="stringliteral">"Line"</span>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  rootElementName[ElementPlotData::CT_LOAD] = _(<span class="stringliteral">"Load"</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  rootElementName[ElementPlotData::CT_SHUNT_CAPACITOR] = _(<span class="stringliteral">"Capacitor"</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  rootElementName[ElementPlotData::CT_SHUNT_INDUCTOR] = _(<span class="stringliteral">"Inductor"</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  rootElementName[ElementPlotData::CT_SYNC_COMPENSATOR] = _(<span class="stringliteral">"Synchronous compensator"</span>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  rootElementName[ElementPlotData::CT_SYNC_GENERATOR] = _(<span class="stringliteral">"Synchronous generator"</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  rootElementName[ElementPlotData::CT_TRANSFORMER] = _(<span class="stringliteral">"Transformer"</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  rootElementName[ElementPlotData::CT_TEST] = _(<span class="stringliteral">"Test"</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  wxTreeItemId rootItemID[ElementPlotData::NUM_ELEMENTS];</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_epdList.begin(), itEnd = m_epdList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a> data = *it;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  ElementPlotData::CurveType curveType = data.GetCurveType();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(firstElement[curveType]) {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  rootItemID[curveType] = m_treeCtrl->AppendItem(rootID, rootElementName[curveType]);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  firstElement[curveType] = <span class="keyword">false</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  wxTreeItemId itemID = m_treeCtrl->AppendItem(rootItemID[curveType], data.GetName());</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < data.GetElementDataNumber(); ++i) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_treeCtrl->AppendItem(itemID, data.GetDataName(i), -1, -1, data.GetPlotData(i));</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keywordtype">void</span> ChartView::OnPropertyGridChange(wxPropertyGridEvent& event)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">bool</span> fit = <span class="keyword">false</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(m_treeCtrl->GetSelection()) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(<a class="code" href="class_plot_data.html">PlotData</a>* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(m_treeCtrl->GetSelection()))) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Draw"</span>)) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">bool</span> isPlotting = m_pgPropDraw->GetValue();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  data->SetPlot(isPlotting);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(isPlotting) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  wxColour colour = GetNextColour();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  data->SetColour(colour);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  m_pgPropColor->SetValue(static_cast<wxVariant>(colour));</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_treeCtrl->SetItemBold(m_treeCtrl->GetSelection(), <span class="keyword">true</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_treeCtrl->SetItemBold(m_treeCtrl->GetSelection(), <span class="keyword">false</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  fit = <span class="keyword">true</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Color"</span>)) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  wxColour colour;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  colour << m_pgPropColor->GetValue();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  data->SetColour(colour);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Thickness"</span>)) {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  data->SetThick(m_pgProplineThick->GetValue().GetInteger());</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Type"</span>)) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  data->SetPenType(static_cast<wxPenStyle>(m_pgProplineType->GetValue().GetInteger()));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Axis"</span>)) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordtype">int</span> axis = m_pgProplineAxis->GetValue().GetInteger();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span>(axis == 1) { <span class="comment">// Y</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="comment">// All lines to Y axis</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  AllToYAxis(m_treeCtrl->GetRootItem());</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="comment">// curva selecionada para o eixo X</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_treeCtrl->SetItemTextColour(m_treeCtrl->GetSelection(), *wxRED);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_xAxisValues = data->GetValues();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  data->SetAxis(axis);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  fit = <span class="keyword">true</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Margins"</span>)) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_mpWindow->SetMargins(m_pgPropMarginsUp->GetValue().GetLong(), m_pgPropMarginsRight->GetValue().GetLong(),</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  m_pgPropMarginsBot->GetValue().GetLong(), m_pgPropMarginsLeft->GetValue().GetLong());</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  m_mpWindow->UpdateAll();</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">if</span>(event.GetPropertyName() == _(<span class="stringliteral">"Axis limit"</span>)) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  m_mpWindow->Fit(m_pgPropXMin->GetValue().GetDouble(), m_pgPropXMax->GetValue().GetDouble(),</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  m_pgPropYMin->GetValue().GetDouble(), m_pgPropYMax->GetValue().GetDouble());</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  m_mpWindow->UpdateAll();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  UpdatePlot(fit);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="keywordtype">void</span> ChartView::OnMenuDarkThemeClick(wxCommandEvent& event)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  m_darkTheme = <span class="keyword">event</span>.IsChecked();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  wxColour grey(96, 96, 96);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span>(m_darkTheme) {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  m_mpWindow->SetColourTheme(*wxBLACK, *wxWHITE, grey);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  m_leg->SetBrush(*wxBLACK_BRUSH);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_coords->SetBrush(*wxBLACK_BRUSH);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  m_mpWindow->SetColourTheme(*wxWHITE, *wxBLACK, grey);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  m_leg->SetBrush(*wxWHITE_BRUSH);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  m_coords->SetBrush(*wxWHITE_BRUSH);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  m_mpWindow->UpdateAll();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="keywordtype">void</span> ChartView::OnMenuSaveImageClick(wxCommandEvent& event)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">int</span> x = m_mpWindow->GetScreenPosition().x;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordtype">int</span> y = m_mpWindow->GetScreenPosition().y;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordtype">int</span> width = m_mpWindow->GetSize().GetWidth();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordtype">int</span> height = m_mpWindow->GetSize().GetHeight();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  wxScreenDC dcScreen;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  wxBitmap screenshot(width, height);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> </div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  wxMemoryDC memDC;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  memDC.SelectObject(screenshot);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  memDC.Blit(0, 0, width, height, &dcScreen, x, y);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  memDC.SelectObject(wxNullBitmap);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  wxFileDialog saveFileDialog(</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keyword">this</span>, _(<span class="stringliteral">"Save image"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>,</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="stringliteral">"PNG image file (*.png)|*.png|Bitmap image file (*.bmp)|*.bmp|JPEG image file (*.jpg)|*.jpg"</span>,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  wxFileName imagePath(saveFileDialog.GetPath());</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  wxBitmapType imageType = wxBITMAP_TYPE_BMP;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(imagePath.GetExt() == <span class="stringliteral">"png"</span>)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  imageType = wxBITMAP_TYPE_PNG;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(imagePath.GetExt() == <span class="stringliteral">"jpg"</span>)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  imageType = wxBITMAP_TYPE_JPEG;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  screenshot.SaveFile(imagePath.GetFullPath(), imageType);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="keywordtype">void</span> ChartView::OnMenuSendClipClick(wxCommandEvent& event)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordtype">int</span> x = m_mpWindow->GetScreenPosition().x;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordtype">int</span> y = m_mpWindow->GetScreenPosition().y;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordtype">int</span> width = m_mpWindow->GetSize().GetWidth();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordtype">int</span> height = m_mpWindow->GetSize().GetHeight();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  wxScreenDC dcScreen;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  wxBitmap screenshot(width, height);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  wxMemoryDC memDC;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  memDC.SelectObject(screenshot);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  memDC.Blit(0, 0, width, height, &dcScreen, x, y);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  memDC.SelectObject(wxNullBitmap);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">if</span>(wxTheClipboard->Open()) {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  wxTheClipboard->SetData(<span class="keyword">new</span> wxBitmapDataObject(screenshot));</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  wxTheClipboard->Close();</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Chart send to clipboard"</span>), _(<span class="stringliteral">"Info"</span>), wxOK | wxICON_INFORMATION,</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  wxDefaultPosition);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to send to clipboard"</span>), _(<span class="stringliteral">"Error"</span>), wxOK | wxICON_ERROR,</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  wxDefaultPosition);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="keywordtype">void</span> ChartView::OnMenuShowCoordinatesClick(wxCommandEvent& event)</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  m_showCoords = <span class="keyword">event</span>.IsChecked();</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  m_coords->SetVisible(m_showCoords);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  m_mpWindow->UpdateAll();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="keywordtype">void</span> ChartView::OnMenuShowGridClick(wxCommandEvent& event)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_hideGrid = <span class="keyword">event</span>.IsChecked() ? false : <span class="keyword">true</span>;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  m_xaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  m_yaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  m_mpWindow->UpdateAll();</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="keywordtype">void</span> ChartView::OnMenuShowLabelClick(wxCommandEvent& event)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  m_showLeg = <span class="keyword">event</span>.IsChecked();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  m_leg->SetVisible(m_showLeg);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  m_mpWindow->UpdateAll();</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="keywordtype">void</span> ChartView::Fit()</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  m_mpWindow->Fit();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordtype">double</span> bBox[4];</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  m_mpWindow->GetBoundingBox(bBox);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  m_pgPropXMin->SetValue(bBox[0]);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_pgPropXMax->SetValue(bBox[1]);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  m_pgPropYMin->SetValue(bBox[2]);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  m_pgPropYMax->SetValue(bBox[3]);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keywordtype">void</span> ChartView::UpdatePlot(<span class="keywordtype">bool</span> fit)</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  wxRect legRect = m_leg->GetRectangle();</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  wxRect coordsRect = m_coords->GetRectangle();</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  m_mpWindow->DelAllLayers(<span class="keyword">true</span>, <span class="keyword">false</span>);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="comment">// GoAllTrees(treeCtrl_ChartSelection->GetRootItem());</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  UpdateAllPlots(m_treeCtrl->GetRootItem());</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  m_xaxis = <span class="keyword">new</span> mpScaleX(m_pgPropXLabel->GetValueAsString(), mpALIGN_BOTTOM, <span class="keyword">true</span>);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  m_yaxis = <span class="keyword">new</span> mpScaleY(m_pgPropYLabel->GetValueAsString(), mpALIGN_LEFT, <span class="keyword">true</span>);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  m_leg = <span class="keyword">new</span> mpInfoLegend(legRect, wxWHITE_BRUSH);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  m_coords = <span class="keyword">new</span> mpInfoCoords(coordsRect, wxWHITE_BRUSH);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  m_xaxis->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  m_yaxis->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  m_xaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  m_yaxis->SetTicks(m_hideGrid);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  mpText* chartTitle = <span class="keyword">new</span> mpText(m_pgPropChartTitle->GetValueAsString(), 50, 0);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  wxFont chartTitleFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  chartTitle->SetFont(chartTitleFont);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  m_mpWindow->AddLayer(m_xaxis);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  m_mpWindow->AddLayer(m_yaxis);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  m_mpWindow->AddLayer(m_leg);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  m_mpWindow->AddLayer(m_coords);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  m_mpWindow->AddLayer(chartTitle);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  m_leg->SetVisible(m_showLeg);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  m_coords->SetVisible(m_showCoords);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span>(fit) Fit();</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> </div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  wxColour grey(96, 96, 96);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">if</span>(m_darkTheme) {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  m_mpWindow->SetColourTheme(*wxBLACK, *wxWHITE, grey);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  m_leg->SetBrush(*wxBLACK_BRUSH);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  m_coords->SetBrush(*wxBLACK_BRUSH);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  m_mpWindow->SetColourTheme(*wxWHITE, *wxBLACK, grey);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  m_leg->SetBrush(*wxWHITE_BRUSH);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  m_coords->SetBrush(*wxWHITE_BRUSH);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="keywordtype">void</span> ChartView::OnTreeItemActivated(wxTreeEvent& event)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">if</span>(<a class="code" href="class_plot_data.html">PlotData</a>* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(event.GetItem()))) {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordtype">bool</span> isPlotting = data->IsPlot() ? false : <span class="keyword">true</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  data->SetPlot(isPlotting);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  m_pgPropDraw->SetValue(data->IsPlot());</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">if</span>(isPlotting) {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  wxColour colour = GetNextColour();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  data->SetColour(colour);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  m_pgPropColor->SetValue(static_cast<wxVariant>(colour));</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  m_treeCtrl->SetItemBold(m_treeCtrl->GetSelection(), <span class="keyword">true</span>);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  m_treeCtrl->SetItemBold(m_treeCtrl->GetSelection(), <span class="keyword">false</span>);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  UpdatePlot(<span class="keyword">true</span>);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">if</span>(event.GetItem() == m_treeTimeID) {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  AllToYAxis(m_treeCtrl->GetRootItem());</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  m_treeCtrl->SetItemTextColour(m_treeTimeID, *wxRED);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  m_xAxisValues = m_time;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  UpdatePlot(<span class="keyword">true</span>);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="keywordtype">void</span> ChartView::OnTreeItemSelectionChanged(wxTreeEvent& event)</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span>(<a class="code" href="class_plot_data.html">PlotData</a>* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(event.GetItem()))) {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  m_pgPropDraw->SetValue(data->IsPlot());</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  wxVariant colour;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  colour << data->GetColour();</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  m_pgPropColor->SetValue(colour);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  m_pgProplineThick->SetValue(data->GetThick());</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  m_pgProplineType->SetValue(data->GetPenType());</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  m_pgProplineAxis->SetValue(data->GetAxis());</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="keywordtype">void</span> ChartView::BuildColourList()</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  m_colourList.push_back(wxColour(255, 0, 0));</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  m_colourList.push_back(wxColour(0, 0, 255));</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  m_colourList.push_back(wxColour(0, 255, 0));</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  m_colourList.push_back(wxColour(255, 128, 0));</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  m_colourList.push_back(wxColour(128, 0, 255));</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  m_colourList.push_back(wxColour(0, 255, 128));</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  m_colourList.push_back(wxColour(255, 255, 0));</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  m_colourList.push_back(wxColour(255, 0, 255));</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  m_colourList.push_back(wxColour(0, 255, 255));</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  m_colourList.push_back(wxColour(128, 255, 0));</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  m_colourList.push_back(wxColour(255, 0, 128));</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  m_colourList.push_back(wxColour(0, 128, 255));</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  m_colourList.push_back(wxColour(128, 128, 128));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  m_colourList.push_back(*wxBLACK);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  m_itColourList = --m_colourList.end();</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> wxColour ChartView::GetNextColour()</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">if</span>(*m_itColourList == *wxBLACK)</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  m_itColourList = m_colourList.begin();</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  ++m_itColourList;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> </div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">return</span> *m_itColourList;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> wxTreeItemId ChartView::AllToYAxis(wxTreeItemId root)</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  wxTreeItemIdValue cookie;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  wxTreeItemId item = m_treeCtrl->GetFirstChild(root, cookie);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  wxTreeItemId child;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">while</span>(item.IsOk()) {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  m_treeCtrl->SetItemTextColour(item, *wxBLACK);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">if</span>(<a class="code" href="class_plot_data.html">PlotData</a>* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(item))) data->SetAxis(0); <span class="comment">// X axis.</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span>(m_treeCtrl->ItemHasChildren(item)) {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  wxTreeItemId nextChild = AllToYAxis(item);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">if</span>(nextChild.IsOk()) <span class="keywordflow">return</span> nextChild;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  item = m_treeCtrl->GetNextChild(root, cookie);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  wxTreeItemId dummyID;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">return</span> dummyID;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> }</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span> wxTreeItemId ChartView::UpdateAllPlots(wxTreeItemId root)</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span> {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  wxTreeItemIdValue cookie;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  wxTreeItemId item = m_treeCtrl->GetFirstChild(root, cookie);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  wxTreeItemId child;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">while</span>(item.IsOk()) {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span>(<a class="code" href="class_plot_data.html">PlotData</a>* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(item))) {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">if</span>(data->IsPlot()) {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  wxString parentName = m_treeCtrl->GetItemText(m_treeCtrl->GetItemParent(item));</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  mpFXYVector* newLayer = <span class="keyword">new</span> mpFXYVector(data->GetName() + <span class="stringliteral">" ("</span> + parentName + <span class="stringliteral">")"</span>);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  newLayer->SetData(m_xAxisValues, data->GetValues());</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  newLayer->SetContinuity(<span class="keyword">true</span>);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  wxPen layerPen(data->GetColour(), data->GetThick(), data->GetPenType());</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  newLayer->SetPen(layerPen);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  newLayer->SetDrawOutsideMargins(<span class="keyword">false</span>);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  newLayer->ShowName(<span class="keyword">false</span>);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  m_mpWindow->AddLayer(newLayer);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">if</span>(m_treeCtrl->ItemHasChildren(item)) {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  wxTreeItemId nextChild = UpdateAllPlots(item);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">if</span>(nextChild.IsOk()) <span class="keywordflow">return</span> nextChild;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  item = m_treeCtrl->GetNextChild(root, cookie);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> </div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  wxTreeItemId dummyID;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">return</span> dummyID;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="keywordtype">void</span> ChartView::OnMenuExpCSVClick(wxCommandEvent& event)</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  wxFileDialog saveFileDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Save CSV file"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>, <span class="stringliteral">"CSV file (*.csv)|*.csv"</span>,</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  wxTextFile csvFile(saveFileDialog.GetPath());</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">if</span>(!csvFile.Create()) {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">if</span>(!csvFile.Open()) {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to open or create the selected file."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  csvFile.Open();</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">if</span>(csvFile.IsOpened()) {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  csvFile.Clear();</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  csvFile.AddLine(GetActiveCurvesCSV());</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  csvFile.Write();</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  csvFile.Close();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> wxString ChartView::GetActiveCurvesCSV()</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  std::vector<PlotData*> activePlotDataList;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  GetActivePlotData(m_treeCtrl->GetRootItem(), activePlotDataList);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> </div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  std::vector<double> xValues;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  wxString xName = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="comment">// Find X axis curve, if none is found, X is the m_time.</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordtype">bool</span> foundXAxis = <span class="keyword">false</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = activePlotDataList.begin(), itEnd = activePlotDataList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <a class="code" href="class_plot_data.html">PlotData</a>* data = *it;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">if</span>(data->GetAxis() == 1) {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  xValues = data->GetValues();</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  xName = data->GetName();</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  foundXAxis = <span class="keyword">true</span>;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  activePlotDataList.erase(it);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keyword">delete</span> data;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">if</span>(!foundXAxis) {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  xValues = m_time;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  xName = _(<span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="comment">// Build CSV text.</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  wxString csvText = xName + <span class="stringliteral">";"</span>;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// Header</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = activePlotDataList.begin(), itEnd = activePlotDataList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <a class="code" href="class_plot_data.html">PlotData</a>* data = *it;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  csvText += data->GetName() + <span class="stringliteral">";"</span>;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  csvText[csvText.length() - 1] = <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="comment">// Values</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < xValues.size(); ++i) {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  csvText += wxString::FromCDouble(xValues[i], 13) + <span class="stringliteral">";"</span>;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < activePlotDataList.size(); ++j) {</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordtype">double</span> value = 0.0;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">if</span>(i < activePlotDataList[j]->GetValues().size()) {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  value = activePlotDataList[j]->GetValues()[i];</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  }</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  csvText += wxString::FromCDouble(value, 13) + <span class="stringliteral">";"</span>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  csvText[csvText.length() - 1] = <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  }</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="comment">// Clear active plot data vector.</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = activePlotDataList.begin(); it != activePlotDataList.end(); ++it) {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keyword">delete</span>(*it);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  activePlotDataList.clear();</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">return</span> csvText;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> }</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> wxTreeItemId ChartView::GetActivePlotData(wxTreeItemId root, std::vector<PlotData*>& plotDataList)</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  wxTreeItemIdValue cookie;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  wxTreeItemId item = m_treeCtrl->GetFirstChild(root, cookie);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  wxTreeItemId child;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span> </div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">while</span>(item.IsOk()) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">if</span>(<a class="code" href="class_plot_data.html">PlotData</a>* data = dynamic_cast<PlotData*>(m_treeCtrl->GetItemData(item))) {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">if</span>(data->IsPlot() || data->GetAxis() == 1) {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  wxString parentName = m_treeCtrl->GetItemText(m_treeCtrl->GetItemParent(item));</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> </div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <a class="code" href="class_plot_data.html">PlotData</a>* dataCopy = <span class="keyword">new</span> <a class="code" href="class_plot_data.html">PlotData</a>();</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  *dataCopy = *data;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  dataCopy->SetName(data->GetName() + <span class="stringliteral">" ("</span> + parentName + <span class="stringliteral">")"</span>);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  plotDataList.push_back(dataCopy);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  }</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">if</span>(m_treeCtrl->ItemHasChildren(item)) {</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  wxTreeItemId nextChild = GetActivePlotData(item, plotDataList);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">if</span>(nextChild.IsOk()) <span class="keywordflow">return</span> nextChild;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  }</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  item = m_treeCtrl->GetNextChild(root, cookie);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  }</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span> </div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  wxTreeItemId dummyID;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">return</span> dummyID;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> }</div><div class="ttc" id="class_chart_view_base_html"><div class="ttname"><a href="class_chart_view_base.html">ChartViewBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_chart_view_base_8h_source.html#l00039">ChartViewBase.h:39</a></div></div> <div class="ttc" id="_chart_view_8h_html"><div class="ttname"><a href="_chart_view_8h.html">ChartView.h</a></div></div> -<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00056">ElementPlotData.h:56</a></div></div> -<div class="ttc" id="class_plot_data_html"><div class="ttname"><a href="class_plot_data.html">PlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00027">ElementPlotData.h:27</a></div></div> +<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00064">ElementPlotData.h:64</a></div></div> +<div class="ttc" id="_element_plot_data_8h_html"><div class="ttname"><a href="_element_plot_data_8h.html">ElementPlotData.h</a></div></div> +<div class="ttc" id="class_plot_data_html"><div class="ttname"><a href="class_plot_data.html">PlotData</a></div><div class="ttdoc">This class is responsible to manage the graphical data of electromechanical result to be plotted on c...</div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00035">ElementPlotData.h:35</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_chart_view_8h_source.html b/docs/doxygen/html/_chart_view_8h_source.html index 45a3f99..f861742 100644 --- a/docs/doxygen/html/_chart_view_8h_source.html +++ b/docs/doxygen/html/_chart_view_8h_source.html @@ -89,9 +89,9 @@ $(document).ready(function(){initNavTree('_chart_view_8h_source.html','');}); </div><!--header--> <div class="contents"> <a href="_chart_view_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef CHARTVIEW_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CHARTVIEW_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "ChartViewBase.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "wxMathPlot/mathplot.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/msgdlg.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <wx/clipbrd.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <wx/bitmap.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <wx/filedlg.h></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <wx/textfile.h></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">class </span><a class="code" href="class_plot_data.html">PlotData</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span><a class="code" href="class_element_plot_data.html">ElementPlotData</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_chart_view.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_chart_view.html">ChartView</a> : <span class="keyword">public</span> <a class="code" href="class_chart_view_base.html">ChartViewBase</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_chart_view.html">ChartView</a>(wxWindow* parent, std::vector<ElementPlotData> epdList, std::vector<double> time);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_chart_view.html">ChartView</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">void</span> Fit();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span> UpdatePlot(<span class="keywordtype">bool</span> fit = <span class="keyword">true</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuExpCSVClick(wxCommandEvent& event);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTreeItemActivated(wxTreeEvent& event);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTreeItemSelectionChanged(wxTreeEvent& event);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuDarkThemeClick(wxCommandEvent& event);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuExitClick(wxCommandEvent& event) { Close(); }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuFitClick(wxCommandEvent& event) { Fit(); }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuSaveImageClick(wxCommandEvent& event);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuSendClipClick(wxCommandEvent& event);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuShowCoordinatesClick(wxCommandEvent& event);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuShowGridClick(wxCommandEvent& event);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMenuShowLabelClick(wxCommandEvent& event);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPropertyGridChange(wxPropertyGridEvent& event);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetMPWindow();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetTreectrl();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> BuildColourList();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> wxColour GetNextColour();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> wxTreeItemId AllToYAxis(wxTreeItemId root);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> wxTreeItemId UpdateAllPlots(wxTreeItemId root);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> wxString GetActiveCurvesCSV();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> wxTreeItemId GetActivePlotData(wxTreeItemId root, std::vector<PlotData*>& plotDataList);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  wxPGProperty* m_pgPropColor = NULL;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  wxTreeItemId m_treeTimeID;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::vector<ElementPlotData> m_epdList;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  std::vector<double> m_time;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  std::vector<double> m_xAxisValues;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  mpWindow* m_mpWindow = NULL;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  mpScaleX* m_xaxis = NULL;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  mpScaleY* m_yaxis = NULL;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  mpText* m_chartTitle = NULL;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  mpInfoCoords* m_coords = NULL;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  mpInfoLegend* m_leg = NULL;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">bool</span> m_hideGrid = <span class="keyword">true</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">bool</span> m_showLeg = <span class="keyword">true</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">bool</span> m_showCoords = <span class="keyword">false</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">bool</span> m_darkTheme = <span class="keyword">false</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  std::vector<wxColour> m_colourList;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  std::vector<wxColour>::iterator m_itColourList;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> };</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#endif // CHARTVIEW_H</span></div><div class="ttc" id="class_chart_view_base_html"><div class="ttname"><a href="class_chart_view_base.html">ChartViewBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_chart_view_base_8h_source.html#l00039">ChartViewBase.h:39</a></div></div> -<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00056">ElementPlotData.h:56</a></div></div> +<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00064">ElementPlotData.h:64</a></div></div> <div class="ttc" id="class_chart_view_html"><div class="ttname"><a href="class_chart_view.html">ChartView</a></div><div class="ttdoc">This class is responsible to manage the charts generated in the transient electromechanical studies...</div><div class="ttdef"><b>Definition:</b> <a href="_chart_view_8h_source.html#l00040">ChartView.h:40</a></div></div> -<div class="ttc" id="class_plot_data_html"><div class="ttname"><a href="class_plot_data.html">PlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00027">ElementPlotData.h:27</a></div></div> +<div class="ttc" id="class_plot_data_html"><div class="ttname"><a href="class_plot_data.html">PlotData</a></div><div class="ttdoc">This class is responsible to manage the graphical data of electromechanical result to be plotted on c...</div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00035">ElementPlotData.h:35</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_connection_line_8cpp_source.html b/docs/doxygen/html/_connection_line_8cpp_source.html index e9e19ff..01771a2 100644 --- a/docs/doxygen/html/_connection_line_8cpp_source.html +++ b/docs/doxygen/html/_connection_line_8cpp_source.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('_connection_line_8cpp_source.html','') <div class="title">ConnectionLine.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_connection_line_8h.html">ConnectionLine.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> ConnectionLine::ConnectionLine() : <a class="code" href="class_control_element.html">ControlElement</a>(-1) {}</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> ConnectionLine::ConnectionLine(<a class="code" href="class_node.html">Node</a>* firstNode, <span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  wxPoint2DDouble pt = firstNode->GetPosition();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_tmpSndPt = pt;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 6; i++) {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_pointList.push_back(pt);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_nodeList.push_back(firstNode);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  firstNode->SetConnected();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> }</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> ConnectionLine::~ConnectionLine() {}</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e"> 33</a></span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">ConnectionLine::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword"></span>{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Line selected (Layer 1).</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// Draw line (Layer 2)</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  glLineWidth(1.5);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span>(m_type == ELEMENT_LINE) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  DrawCircle(m_pointList[5], 3, 10, GL_POLYGON);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f"> 53</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f">ConnectionLine::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword"></span>{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">if</span>(PointToLineDistance(position) < 5.0) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="class_connection_line.html#aaa3e63c2e48338e324ee7b58911c86b6"> 61</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_connection_line.html#aaa3e63c2e48338e324ee7b58911c86b6">ConnectionLine::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword"></span>{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_pointList.begin(); it != m_pointList.end(); ++it) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">if</span>(rect.Contains(*it)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keywordtype">void</span> ConnectionLine::UpdatePoints()</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">if</span>(m_type == ELEMENT_ELEMENT) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">bool</span> hasOneNode = <span class="keyword">true</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  wxPoint2DDouble pt1 = m_nodeList[0]->GetPosition();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  wxPoint2DDouble pt2;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span>(m_nodeList.size() == 1)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  pt2 = m_tmpSndPt;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  pt2 = m_nodeList[1]->GetPosition();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  hasOneNode = <span class="keyword">false</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  wxPoint2DDouble midPt = (pt1 + pt2) / 2.0 + wxPoint2DDouble(0.0, m_lineOffset);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_pointList[0] = pt1;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 0.0)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(-10, 0);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 90.0)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(0, -10);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 180.0)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(10, 0);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 270.0)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(0, 10);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_pointList[2] = m_pointList[1] + wxPoint2DDouble(0.0, midPt.m_y - m_pointList[1].m_y);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_pointList[5] = pt2;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span>(hasOneNode)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_pointList[4] = pt2;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span>(m_nodeList[1]->GetAngle() == 0.0)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(-10, 0);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[1]->GetAngle() == 90.0)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(0, -10);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[1]->GetAngle() == 180.0)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(10, 0);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[1]->GetAngle() == 270.0)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(0, 10);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_pointList[3] = m_pointList[4] + wxPoint2DDouble(0.0, midPt.m_y - m_pointList[4].m_y);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_type == ELEMENT_LINE) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  wxPoint2DDouble pt1 = m_nodeList[0]->GetPosition();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  wxPoint2DDouble pt2 = m_parentLine->GetMidPoint();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  wxPoint2DDouble midPt = (pt1 + pt2) / 2.0 + wxPoint2DDouble(0.0, m_lineOffset);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_pointList[0] = pt1;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 0.0)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(-10, 0);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 90.0)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(0, -10);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 180.0)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(10, 0);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 270.0)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(0, 10);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_pointList[2] = m_pointList[1] + wxPoint2DDouble(0.0, midPt.m_y - m_pointList[1].m_y);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_pointList[5] = pt2;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span>(m_pointList[2].m_y > pt2.m_y) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(0, 10);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(0, -10);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_pointList[3] = m_pointList[4] + wxPoint2DDouble(0.0, midPt.m_y - m_pointList[4].m_y);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_childList.begin(), itEnd = m_childList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*it);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  child->UpdatePoints();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="keywordtype">bool</span> ConnectionLine::AppendNode(<a class="code" href="class_node.html">Node</a>* node, <a class="code" href="class_control_element.html">ControlElement</a>* parent)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(m_nodeList.size() != 1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span>(m_nodeList[0] == node) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(m_nodeList[0]->GetNodeType() == node->GetNodeType()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">auto</span> nodeList = parent->GetNodeList();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = nodeList.begin(), itEnd = nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="class_node.html">Node</a>* parentNode = *it;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span>(parentNode == m_nodeList[0]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  m_nodeList.push_back(node);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  node->SetConnected();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7"> 158</a></span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">ConnectionLine::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  m_lineOffset = m_moveStartOffset + position.m_y - m_moveStartPtY;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  UpdatePoints();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36"> 164</a></span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36">ConnectionLine::StartMove</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_moveStartPtY = position.m_y;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_moveStartOffset = m_lineOffset;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> wxPoint2DDouble ConnectionLine::GetMidPoint()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ((m_pointList[2] + m_pointList[3]) / 2.0); }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keywordtype">bool</span> ConnectionLine::SetParentLine(<a class="code" href="class_connection_line.html">ConnectionLine</a>* parent)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span>(m_nodeList[0]->GetNodeType() != Node::NODE_IN) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span>(!parent) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_type = ELEMENT_LINE;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_parentLine = parent;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> std::vector<ConnectionLine*> ConnectionLine::GetLineChildList()<span class="keyword"> const</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keyword"></span>{</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  std::vector<ConnectionLine*> childList;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_childList.begin(), itEnd = m_childList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*it);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  childList.push_back(child);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> childList;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="class_connection_line.html#a3f5584348b86e665161b033d4ce8d702"> 191</a></span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a3f5584348b86e665161b033d4ce8d702">ConnectionLine::RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_parentList.begin(); it != m_parentList.end(); ++it) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span>(element == parent) m_parentList.erase(it--);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="class_connection_line.html#a131a890bd54059c5370f1dc5156c192c"> 199</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_connection_line.html#a131a890bd54059c5370f1dc5156c192c">ConnectionLine::GetCopy</a>()</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* copy = <span class="keyword">new</span> <a class="code" href="class_connection_line.html">ConnectionLine</a>();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_connection_line_8h.html">ConnectionLine.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> ConnectionLine::ConnectionLine() : <a class="code" href="class_control_element.html">ControlElement</a>(-1) {}</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> ConnectionLine::ConnectionLine(<a class="code" href="class_node.html">Node</a>* firstNode, <span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  wxPoint2DDouble pt = firstNode->GetPosition();</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_tmpSndPt = pt;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 6; i++) {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_pointList.push_back(pt);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_nodeList.push_back(firstNode);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  firstNode->SetConnected();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> }</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> ConnectionLine::~ConnectionLine() {}</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e"> 33</a></span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">ConnectionLine::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword"></span>{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Line selected (Layer 1).</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// Draw line (Layer 2)</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  glLineWidth(1.5);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span>(m_type == ELEMENT_LINE) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  DrawCircle(m_pointList[5], 3, 10, GL_POLYGON);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f"> 53</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f">ConnectionLine::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword"></span>{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">if</span>(PointToLineDistance(position) < 5.0) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="class_connection_line.html#aaa3e63c2e48338e324ee7b58911c86b6"> 61</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_connection_line.html#aaa3e63c2e48338e324ee7b58911c86b6">ConnectionLine::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keyword"></span>{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_pointList.begin(); it != m_pointList.end(); ++it) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">if</span>(rect.Contains(*it)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keywordtype">void</span> ConnectionLine::UpdatePoints()</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">if</span>(m_type == ELEMENT_ELEMENT) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">bool</span> hasOneNode = <span class="keyword">true</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  wxPoint2DDouble pt1 = m_nodeList[0]->GetPosition();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  wxPoint2DDouble pt2;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span>(m_nodeList.size() == 1)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  pt2 = m_tmpSndPt;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  pt2 = m_nodeList[1]->GetPosition();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  hasOneNode = <span class="keyword">false</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  wxPoint2DDouble midPt = (pt1 + pt2) / 2.0 + wxPoint2DDouble(0.0, m_lineOffset);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_pointList[0] = pt1;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 0.0)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(-10, 0);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 90.0)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(0, -10);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 180.0)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(10, 0);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 270.0)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(0, 10);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_pointList[2] = m_pointList[1] + wxPoint2DDouble(0.0, midPt.m_y - m_pointList[1].m_y);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_pointList[5] = pt2;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span>(hasOneNode)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_pointList[4] = pt2;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span>(m_nodeList[1]->GetAngle() == 0.0)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(-10, 0);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[1]->GetAngle() == 90.0)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(0, -10);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[1]->GetAngle() == 180.0)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(10, 0);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[1]->GetAngle() == 270.0)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(0, 10);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_pointList[3] = m_pointList[4] + wxPoint2DDouble(0.0, midPt.m_y - m_pointList[4].m_y);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_type == ELEMENT_LINE) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  wxPoint2DDouble pt1 = m_nodeList[0]->GetPosition();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  wxPoint2DDouble pt2 = m_parentLine->GetMidPoint();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  wxPoint2DDouble midPt = (pt1 + pt2) / 2.0 + wxPoint2DDouble(0.0, m_lineOffset);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_pointList[0] = pt1;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 0.0)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(-10, 0);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 90.0)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(0, -10);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 180.0)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(10, 0);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_nodeList[0]->GetAngle() == 270.0)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_pointList[1] = m_pointList[0] + wxPoint2DDouble(0, 10);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_pointList[2] = m_pointList[1] + wxPoint2DDouble(0.0, midPt.m_y - m_pointList[1].m_y);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_pointList[5] = pt2;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span>(m_pointList[2].m_y > pt2.m_y) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(0, 10);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_pointList[4] = m_pointList[5] + wxPoint2DDouble(0, -10);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_pointList[3] = m_pointList[4] + wxPoint2DDouble(0.0, midPt.m_y - m_pointList[4].m_y);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_childList.begin(), itEnd = m_childList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*it);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  child->UpdatePoints();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="keywordtype">bool</span> ConnectionLine::AppendNode(<a class="code" href="class_node.html">Node</a>* node, <a class="code" href="class_control_element.html">ControlElement</a>* parent)</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(m_nodeList.size() != 1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span>(m_nodeList[0] == node) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(m_nodeList[0]->GetNodeType() == node->GetNodeType()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">auto</span> nodeList = parent->GetNodeList();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = nodeList.begin(), itEnd = nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="class_node.html">Node</a>* parentNode = *it;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span>(parentNode == m_nodeList[0]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  m_nodeList.push_back(node);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  node->SetConnected();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7"> 158</a></span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">ConnectionLine::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  m_lineOffset = m_moveStartOffset + position.m_y - m_moveStartPtY;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  UpdatePoints();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36"> 164</a></span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36">ConnectionLine::StartMove</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_moveStartPtY = position.m_y;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_moveStartOffset = m_lineOffset;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> wxPoint2DDouble ConnectionLine::GetMidPoint()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ((m_pointList[2] + m_pointList[3]) / 2.0); }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keywordtype">bool</span> ConnectionLine::SetParentLine(<a class="code" href="class_connection_line.html">ConnectionLine</a>* parent)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span>(m_nodeList[0]->GetNodeType() != Node::NODE_IN) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span>(!parent) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_type = ELEMENT_LINE;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_parentLine = parent;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> std::vector<ConnectionLine*> ConnectionLine::GetLineChildList()<span class="keyword"> const</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keyword"></span>{</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  std::vector<ConnectionLine*> childList;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_childList.begin(), itEnd = m_childList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*it);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  childList.push_back(child);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> childList;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="class_connection_line.html#a3f5584348b86e665161b033d4ce8d702"> 191</a></span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a3f5584348b86e665161b033d4ce8d702">ConnectionLine::RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_parentList.begin(); it != m_parentList.end(); ++it) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span>(element == parent) m_parentList.erase(it--);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="class_connection_line.html#a131a890bd54059c5370f1dc5156c192c"> 199</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_connection_line.html#a131a890bd54059c5370f1dc5156c192c">ConnectionLine::GetCopy</a>()</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* copy = <span class="keyword">new</span> <a class="code" href="class_connection_line.html">ConnectionLine</a>();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_connection_line_html_a49300d04c6dd4bcc6f4569c0c47780c7"><div class="ttname"><a href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">ConnectionLine::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8cpp_source.html#l00158">ConnectionLine.cpp:158</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> <div class="ttc" id="class_connection_line_html_a131a890bd54059c5370f1dc5156c192c"><div class="ttname"><a href="class_connection_line.html#a131a890bd54059c5370f1dc5156c192c">ConnectionLine::GetCopy</a></div><div class="ttdeci">Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8cpp_source.html#l00199">ConnectionLine.cpp:199</a></div></div> diff --git a/docs/doxygen/html/_connection_line_8h_source.html b/docs/doxygen/html/_connection_line_8h_source.html index 5705bd2..0c1688b 100644 --- a/docs/doxygen/html/_connection_line_8h_source.html +++ b/docs/doxygen/html/_connection_line_8h_source.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('_connection_line_8h_source.html','');} <div class="title">ConnectionLine.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_connection_line_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef CONNECTIONLINE_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CONNECTIONLINE_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="class_connection_line.html"> 30</a></span> <span class="keyword">class </span><a class="code" href="class_connection_line.html">ConnectionLine</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">enum</span> ConnectionLineType { ELEMENT_ELEMENT = 0, ELEMENT_LINE };</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>(<a class="code" href="class_node.html">Node</a>* firstNode, <span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ~<a class="code" href="class_connection_line.html">ConnectionLine</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f">Contains</a>(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_connection_line.html#aaa3e63c2e48338e324ee7b58911c86b6">Intersects</a>(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a3f5584348b86e665161b033d4ce8d702">RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36">StartMove</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">Move</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> AppendNode(<a class="code" href="class_node.html">Node</a>* node, <a class="code" href="class_control_element.html">ControlElement</a>* parent);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetTemporarySecondPoint(wxPoint2DDouble point) { m_tmpSndPt = point; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> wxPoint2DDouble GetMidPoint() <span class="keyword">const</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> GetOffset()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_lineOffset; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetOffset(<span class="keywordtype">double</span> offset) { m_lineOffset = offset; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> ConnectionLineType GetType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_type; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetType(ConnectionLineType newType) { m_type = newType; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <a class="code" href="class_connection_line.html">ConnectionLine</a>* GetParentLine()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_parentLine; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> SetParentLine(<a class="code" href="class_connection_line.html">ConnectionLine</a>* parent);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> std::vector<ConnectionLine*> GetLineChildList() <span class="keyword">const</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> GetValue()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_value; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetValue(<span class="keywordtype">double</span> value) { m_value = value; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_connection_line.html#a131a890bd54059c5370f1dc5156c192c">GetCopy</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">double</span> m_lineOffset = 0.0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">double</span> m_moveStartPtY = 0.0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">double</span> m_moveStartOffset = 0.0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  wxPoint2DDouble m_tmpSndPt;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  ConnectionLineType m_type = ELEMENT_ELEMENT;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* m_parentLine = NULL;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">double</span> m_value;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> };</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#endif // CONNECTIONLINE_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_connection_line_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef CONNECTIONLINE_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CONNECTIONLINE_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="class_connection_line.html"> 30</a></span> <span class="keyword">class </span><a class="code" href="class_connection_line.html">ConnectionLine</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">enum</span> ConnectionLineType { ELEMENT_ELEMENT = 0, ELEMENT_LINE };</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>(<a class="code" href="class_node.html">Node</a>* firstNode, <span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ~<a class="code" href="class_connection_line.html">ConnectionLine</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f">Contains</a>(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_connection_line.html#aaa3e63c2e48338e324ee7b58911c86b6">Intersects</a>(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a3f5584348b86e665161b033d4ce8d702">RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36">StartMove</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">Move</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> AppendNode(<a class="code" href="class_node.html">Node</a>* node, <a class="code" href="class_control_element.html">ControlElement</a>* parent);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetTemporarySecondPoint(wxPoint2DDouble point) { m_tmpSndPt = point; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> wxPoint2DDouble GetMidPoint() <span class="keyword">const</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> GetOffset()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_lineOffset; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetOffset(<span class="keywordtype">double</span> offset) { m_lineOffset = offset; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> ConnectionLineType GetType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_type; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetType(ConnectionLineType newType) { m_type = newType; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <a class="code" href="class_connection_line.html">ConnectionLine</a>* GetParentLine()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_parentLine; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> SetParentLine(<a class="code" href="class_connection_line.html">ConnectionLine</a>* parent);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> std::vector<ConnectionLine*> GetLineChildList() <span class="keyword">const</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> GetValue()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_value; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetValue(<span class="keywordtype">double</span> value) { m_value = value; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_connection_line.html#a131a890bd54059c5370f1dc5156c192c">GetCopy</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">double</span> m_lineOffset = 0.0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">double</span> m_moveStartPtY = 0.0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">double</span> m_moveStartOffset = 0.0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  wxPoint2DDouble m_tmpSndPt;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  ConnectionLineType m_type = ELEMENT_ELEMENT;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* m_parentLine = NULL;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">double</span> m_value;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> };</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor">#endif // CONNECTIONLINE_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_connection_line_html_a49300d04c6dd4bcc6f4569c0c47780c7"><div class="ttname"><a href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">ConnectionLine::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8cpp_source.html#l00158">ConnectionLine.cpp:158</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> <div class="ttc" id="class_connection_line_html_a131a890bd54059c5370f1dc5156c192c"><div class="ttname"><a href="class_connection_line.html#a131a890bd54059c5370f1dc5156c192c">ConnectionLine::GetCopy</a></div><div class="ttdeci">Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8cpp_source.html#l00199">ConnectionLine.cpp:199</a></div></div> diff --git a/docs/doxygen/html/_constant_8cpp_source.html b/docs/doxygen/html/_constant_8cpp_source.html index 0a18ef1..2329458 100644 --- a/docs/doxygen/html/_constant_8cpp_source.html +++ b/docs/doxygen/html/_constant_8cpp_source.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('_constant_8cpp_source.html','');}); <div class="title">Constant.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_constant_8h.html">Constant.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_constant_form_8h.html">ConstantForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Constant::Constant(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  SetValue(m_value);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_angle = 180.0;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="class_node.html">Node</a>* nodeOut = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(m_width / 2, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> Constant::~Constant() {}</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_constant.html#afc4d8739980ae1b57e9c5058c2e05591"> 32</a></span> <span class="keywordtype">void</span> <a class="code" href="class_constant.html#afc4d8739980ae1b57e9c5058c2e05591">Constant::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword"></span>{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  glLineWidth(1.0);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  glColor4dv(m_selectionColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(m_position, m_width + borderSize, m_height + borderSize);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(m_position, m_width, m_height);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(m_position, m_width, m_height, GL_LINE_LOOP);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// Plot number.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_glStringValue->bind();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_glStringValue->render(m_position.m_x, m_position.m_y);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  DrawNodes();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="class_constant.html#af6bded0e01717303bb71da9e45c2b061"> 56</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_constant.html#af6bded0e01717303bb71da9e45c2b061">Constant::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_constant_form.html">ConstantForm</a>* form = <span class="keyword">new</span> <a class="code" href="class_constant_form.html">ConstantForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  form->Destroy();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  form->Destroy();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="class_constant.html#a867addfc3c1a755b7aa0032d119245c6"> 67</a></span> <span class="keywordtype">void</span> <a class="code" href="class_constant.html#a867addfc3c1a755b7aa0032d119245c6">Constant::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_angle += 90.0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_angle -= 90.0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_angle = 0.0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_angle = 270.0;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  UpdatePoints();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keywordtype">void</span> Constant::UpdatePoints()</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span>(m_nodeList.size() != 0) {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keywordtype">void</span> Constant::SetValue(<span class="keywordtype">double</span> value)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_value = value;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  wxString text = <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(m_value);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  wxScreenDC dc;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span>(m_glStringValue) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">delete</span> m_glStringValue;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_glStringValue = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(text);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  m_glStringValue->setFont(font);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_glStringValue->consolidate(&dc);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_width = m_glStringValue->getWidth() + 6 + 2 * m_borderSize;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_height = m_glStringValue->getheight() + 6 + 2 * m_borderSize;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  UpdatePoints();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="class_constant.html#ac566e3a63326d3f543a55af14ae0f8fa"> 123</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_constant.html#ac566e3a63326d3f543a55af14ae0f8fa">Constant::GetCopy</a>()</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="class_constant.html">Constant</a>* copy = <span class="keyword">new</span> <a class="code" href="class_constant.html">Constant</a>(m_elementID);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  SetValue(m_value);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_constant_8h.html">Constant.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_constant_form_8h.html">ConstantForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Constant::Constant(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  SetValue(m_value);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_angle = 180.0;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="class_node.html">Node</a>* nodeOut = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(m_width / 2, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> Constant::~Constant() {}</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_constant.html#afc4d8739980ae1b57e9c5058c2e05591"> 32</a></span> <span class="keywordtype">void</span> <a class="code" href="class_constant.html#afc4d8739980ae1b57e9c5058c2e05591">Constant::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword"></span>{</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  glLineWidth(1.0);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  glColor4dv(m_selectionColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(m_position, m_width + borderSize, m_height + borderSize);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(m_position, m_width, m_height);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(m_position, m_width, m_height, GL_LINE_LOOP);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="comment">// Plot number.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_glStringValue->bind();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_glStringValue->render(m_position.m_x, m_position.m_y);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  DrawNodes();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="class_constant.html#af6bded0e01717303bb71da9e45c2b061"> 56</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_constant.html#af6bded0e01717303bb71da9e45c2b061">Constant::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="class_constant_form.html">ConstantForm</a>* form = <span class="keyword">new</span> <a class="code" href="class_constant_form.html">ConstantForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  form->Destroy();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  form->Destroy();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="class_constant.html#a867addfc3c1a755b7aa0032d119245c6"> 67</a></span> <span class="keywordtype">void</span> <a class="code" href="class_constant.html#a867addfc3c1a755b7aa0032d119245c6">Constant::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_angle += 90.0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_angle -= 90.0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_angle = 0.0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_angle = 270.0;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  UpdatePoints();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keywordtype">void</span> Constant::UpdatePoints()</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span>(m_nodeList.size() != 0) {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keywordtype">void</span> Constant::SetValue(<span class="keywordtype">double</span> value)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_value = value;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  wxString text = <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(m_value);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  wxScreenDC dc;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span>(m_glStringValue) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">delete</span> m_glStringValue;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_glStringValue = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(text);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  m_glStringValue->setFont(font);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_glStringValue->consolidate(&dc);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_width = m_glStringValue->getWidth() + 6 + 2 * m_borderSize;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_height = m_glStringValue->getheight() + 6 + 2 * m_borderSize;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  UpdatePoints();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="class_constant.html#ac566e3a63326d3f543a55af14ae0f8fa"> 123</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_constant.html#ac566e3a63326d3f543a55af14ae0f8fa">Constant::GetCopy</a>()</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="class_constant.html">Constant</a>* copy = <span class="keyword">new</span> <a class="code" href="class_constant.html">Constant</a>(m_elementID);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  SetValue(m_value);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> <div class="ttc" id="class_constant_html_ac566e3a63326d3f543a55af14ae0f8fa"><div class="ttname"><a href="class_constant.html#ac566e3a63326d3f543a55af14ae0f8fa">Constant::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_8cpp_source.html#l00123">Constant.cpp:123</a></div></div> <div class="ttc" id="class_element_html_a6c37e613808c5ee3bc37bb14a1fe85c8"><div class="ttname"><a href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">Element::DrawRectangle</a></div><div class="ttdeci">virtual void DrawRectangle(wxPoint2DDouble position, double width, double height, GLenum mode=GL_QUADS) const</div><div class="ttdoc">Draw rectangle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00069">Element.cpp:69</a></div></div> diff --git a/docs/doxygen/html/_constant_8h_source.html b/docs/doxygen/html/_constant_8h_source.html index d698df6..53dc0fa 100644 --- a/docs/doxygen/html/_constant_8h_source.html +++ b/docs/doxygen/html/_constant_8h_source.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('_constant_8h_source.html','');}); <div class="title">Constant.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_constant_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef CONSTANT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CONSTANT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_constant_form.html">ConstantForm</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_constant.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_constant.html">Constant</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_constant.html">Constant</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  ~<a class="code" href="class_constant.html">Constant</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_constant.html#afc4d8739980ae1b57e9c5058c2e05591">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_constant.html#ae091eb79633beb158dc06880424f7ce6"> 42</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_constant.html#ae091eb79633beb158dc06880424f7ce6">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_constant.html#ac2e2c958b3d38ed381d59cbb361974b2"> 43</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_constant.html#ac2e2c958b3d38ed381d59cbb361974b2">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_constant.html#af6bded0e01717303bb71da9e45c2b061">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_constant.html#a867addfc3c1a755b7aa0032d119245c6">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() { SetValue(m_value); }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetValue(<span class="keywordtype">double</span> value);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> GetValue()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_value; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_constant.html#ac566e3a63326d3f543a55af14ae0f8fa">GetCopy</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">double</span> m_value = 1.0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringValue = NULL;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">int</span> m_fontSize = 10;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#endif // CONSTANT_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_constant_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef CONSTANT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CONSTANT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_constant_form.html">ConstantForm</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_constant.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_constant.html">Constant</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_constant.html">Constant</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  ~<a class="code" href="class_constant.html">Constant</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_constant.html#afc4d8739980ae1b57e9c5058c2e05591">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_constant.html#ae091eb79633beb158dc06880424f7ce6"> 42</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_constant.html#ae091eb79633beb158dc06880424f7ce6">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_constant.html#ac2e2c958b3d38ed381d59cbb361974b2"> 43</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_constant.html#ac2e2c958b3d38ed381d59cbb361974b2">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_constant.html#af6bded0e01717303bb71da9e45c2b061">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_constant.html#a867addfc3c1a755b7aa0032d119245c6">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() { SetValue(m_value); }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetValue(<span class="keywordtype">double</span> value);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> GetValue()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_value; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_constant.html#ac566e3a63326d3f543a55af14ae0f8fa">GetCopy</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">double</span> m_value = 1.0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringValue = NULL;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">int</span> m_fontSize = 10;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#endif // CONSTANT_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_constant_html_ae091eb79633beb158dc06880424f7ce6"><div class="ttname"><a href="class_constant.html#ae091eb79633beb158dc06880424f7ce6">Constant::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00042">Constant.h:42</a></div></div> <div class="ttc" id="class_constant_html_ac2e2c958b3d38ed381d59cbb361974b2"><div class="ttname"><a href="class_constant.html#ac2e2c958b3d38ed381d59cbb361974b2">Constant::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00043">Constant.h:43</a></div></div> <div class="ttc" id="class_constant_html_ac566e3a63326d3f543a55af14ae0f8fa"><div class="ttname"><a href="class_constant.html#ac566e3a63326d3f543a55af14ae0f8fa">Constant::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_8cpp_source.html#l00123">Constant.cpp:123</a></div></div> diff --git a/docs/doxygen/html/_control_editor_8cpp_source.html b/docs/doxygen/html/_control_editor_8cpp_source.html index db69d94..a71cf1d 100644 --- a/docs/doxygen/html/_control_editor_8cpp_source.html +++ b/docs/doxygen/html/_control_editor_8cpp_source.html @@ -88,14 +88,14 @@ $(document).ready(function(){initNavTree('_control_editor_8cpp_source.html',''); <div class="title">ControlEditor.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_control_editor_8h.html">ControlEditor.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="_file_handing_8h.html">FileHanding.h</a>"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="_camera_8h.html">Camera.h</a>"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "TransferFunction.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="_connection_line_8h.html">ConnectionLine.h</a>"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "Sum.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="_multiplier_8h.html">Multiplier.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="_limiter_8h.html">Limiter.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="_rate_limiter_8h.html">RateLimiter.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="_exponential_8h.html">Exponential.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="_constant_8h.html">Constant.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="_gain_8h.html">Gain.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="_control_element_solver_8h.html">ControlElementSolver.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="_control_element_container_8h.html">ControlElementContainer.h</a>"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="_chart_view_8h.html">ChartView.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "ElementPlotData.h"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> ControlElementButton::ControlElementButton(wxWindow* parent, wxString label, wxImage image, wxWindowID <span class="keywordtype">id</span>)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  : wxWindow(parent, id)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  SetBackgroundColour(*wxWHITE);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// m_font = wxFont(8, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_label = label;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_image = image;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_imageSize = wxSize(image.GetWidth(), image.GetHeight());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Calculate label size.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxScreenDC dc;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  dc.SetFont(m_font);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  wxSize textSize = dc.GetTextExtent(label);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">int</span> buttonWidth = 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(textSize.GetWidth() > m_imageSize.GetWidth()) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  buttonWidth = textSize.GetWidth();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_imagePosition = wxPoint((buttonWidth - m_imageSize.GetWidth()) / 2 + m_borderSize, m_borderSize);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_labelPosition = wxPoint(m_borderSize, m_imageSize.GetHeight() + m_borderSize);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  buttonWidth = m_imageSize.GetWidth();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_imagePosition = wxPoint(m_borderSize, m_borderSize);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_labelPosition =</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  wxPoint((buttonWidth - textSize.GetWidth()) / 2 + m_borderSize, m_imageSize.GetHeight() + m_borderSize);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_buttonSize =</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  wxSize(buttonWidth + 2 * m_borderSize, textSize.GetHeight() + m_imageSize.GetHeight() + 2 * m_borderSize);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  SetMinSize(m_buttonSize + wxSize(m_borderSize, m_borderSize));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// Events.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  Bind(wxEVT_PAINT, &ControlElementButton::OnPaint, <span class="keyword">this</span>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  Bind(wxEVT_ENTER_WINDOW, &ControlElementButton::OnMouseEnter, <span class="keyword">this</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Bind(wxEVT_LEAVE_WINDOW, &ControlElementButton::OnMouseLeave, <span class="keyword">this</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  Bind(wxEVT_LEFT_DOWN, &ControlElementButton::OnLeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  Bind(wxEVT_LEFT_UP, &ControlElementButton::OnLeftClickUp, <span class="keyword">this</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> ControlElementButton::~ControlElementButton() {}</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">void</span> ControlElementButton::OnPaint(wxPaintEvent& event)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  wxPaintDC dc(<span class="keyword">this</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  wxGraphicsContext* gc = wxGraphicsContext::Create(dc);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(gc) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(m_mouseAbove) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  gc->SetPen(wxPen(wxColour(0, 125, 255, 255), m_borderSize - 1));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  gc->SetBrush(wxBrush(wxColour(0, 125, 255, 100)));</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  gc->SetPen(*wxTRANSPARENT_PEN);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  gc->SetBrush(wxBrush(wxColour(0, 125, 255, 70)));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  gc->DrawRectangle(m_borderSize / 2, m_borderSize / 2, m_buttonSize.GetWidth(), m_buttonSize.GetHeight());</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  gc->DrawBitmap(gc->CreateBitmapFromImage(m_image), m_imagePosition.x, m_imagePosition.y, m_imageSize.GetWidth(),</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_imageSize.GetHeight());</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  gc->SetFont(m_font, *wxBLACK);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  gc->DrawText(m_label, m_labelPosition.x, m_labelPosition.y);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">delete</span> gc;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keywordtype">void</span> ControlElementButton::OnMouseEnter(wxMouseEvent& event)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_mouseAbove = <span class="keyword">true</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  Refresh();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keywordtype">void</span> ControlElementButton::OnMouseLeave(wxMouseEvent& event)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_mouseAbove = <span class="keyword">false</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  Refresh();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="keywordtype">void</span> ControlElementButton::OnLeftClickDown(wxMouseEvent& event)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_selected = <span class="keyword">true</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  Refresh();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="keywordtype">void</span> ControlElementButton::OnLeftClickUp(wxMouseEvent& event)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_selected = <span class="keyword">false</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  Refresh();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> ControlEditor::ControlEditor(wxWindow* parent, <span class="keywordtype">int</span> ioflags) : <a class="code" href="class_control_editor_base.html">ControlEditorBase</a>(parent)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  BuildControlElementPanel();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_glContext = <span class="keyword">new</span> wxGLContext(m_glCanvas);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_camera = <span class="keyword">new</span> <a class="code" href="class_camera.html">Camera</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_selectionRect = wxRect2DDouble(0, 0, 0, 0);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// m_camera->SetScale(1.2);</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_ioFlags = ioflags;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> ControlEditor::~ControlEditor()</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// m_tfButton->Disconnect(wxEVT_LEFT_DOWN, wxMouseEventHandler(ControlEditor::LeftClickDown), m_tfButton, this);</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="keywordtype">void</span> ControlEditor::BuildControlElementPanel()</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_panelControlElements->SetDoubleBuffered(<span class="keyword">true</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  wxWrapSizer* wrapSizer = <span class="keyword">new</span> wxWrapSizer();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_panelControlElements->SetSizer(wrapSizer);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  wxFileName exeFileName(wxStandardPaths::Get().GetExecutablePath());</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  wxString exePath = exeFileName.GetPath();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* ioButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_panelControlElements, _(<span class="stringliteral">"In/Out"</span>), wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\io.png"</span>), ID_IO);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  wrapSizer->Add(ioButton, 0, wxALL, 5);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  ioButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* tfButton =</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(m_panelControlElements, _(<span class="stringliteral">"Transfer fcn"</span>),</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\transferFunc.png"</span>), ID_TF);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  wrapSizer->Add(tfButton, 0, wxALL, 5);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  tfButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* sumButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_panelControlElements, _(<span class="stringliteral">"Sum"</span>), wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\sum.png"</span>), ID_SUM);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  wrapSizer->Add(sumButton, 0, wxALL, 5);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  sumButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* constButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  m_panelControlElements, _(<span class="stringliteral">"Constant"</span>), wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\value.png"</span>), ID_CONST);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  wrapSizer->Add(constButton, 0, wxALL, 5);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  constButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* limButton =</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(m_panelControlElements, _(<span class="stringliteral">"Limiter"</span>),</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\limiter.png"</span>), ID_LIMITER);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  wrapSizer->Add(limButton, 0, wxALL, 5);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  limButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* gainButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  m_panelControlElements, _(<span class="stringliteral">"Gain"</span>), wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\gain.png"</span>), ID_GAIN);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  wrapSizer->Add(gainButton, 0, wxALL, 5);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  gainButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* multButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  m_panelControlElements, _(<span class="stringliteral">"Multiplier"</span>), wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\mult.png"</span>), ID_MULT);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  wrapSizer->Add(multButton, 0, wxALL, 5);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  multButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* satButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  m_panelControlElements, _(<span class="stringliteral">"Exponential"</span>), wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\sat.png"</span>), ID_EXP);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  wrapSizer->Add(satButton, 0, wxALL, 5);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  satButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* rateLimButton =</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(m_panelControlElements, _(<span class="stringliteral">"Rate limiter"</span>),</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\rateLimiter.png"</span>), ID_RATELIM);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  wrapSizer->Add(rateLimButton, 0, wxALL, 5);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  rateLimButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keywordtype">void</span> ControlEditor::LeftClickDown(wxMouseEvent& event)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  AddElement(static_cast<ControlElementButtonID>(event.GetId()));</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="keywordtype">void</span> ControlEditor::SetViewport()</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  glClearColor(1.0, 1.0, 1.0, 1.0); <span class="comment">// White background.</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  glClear(GL_COLOR_BUFFER_BIT);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  glDisable(GL_DEPTH_TEST);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  glEnable(GL_COLOR_MATERIAL);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  glEnable(GL_BLEND);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  glEnable(GL_LINE_SMOOTH);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordtype">double</span> width = m_glCanvas->GetSize().x - 1;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordtype">double</span> height = m_glCanvas->GetSize().y - 1;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">// Viewport fit the screen.</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  glViewport(0, 0, width, height);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  glMatrixMode(GL_PROJECTION);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  glLoadIdentity();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  gluOrtho2D(0.0, width, height, 0.0);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  glMatrixMode(GL_MODELVIEW);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  glLoadIdentity();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="keywordtype">void</span> ControlEditor::AddElement(ControlElementButtonID <span class="keywordtype">id</span>)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">switch</span>(<span class="keywordtype">id</span>) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">case</span> ID_IO: {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* io = <span class="keyword">new</span> <a class="code" href="class_i_o_control.html">IOControl</a>(m_ioFlags, m_lastElementID);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_elementList.push_back(io);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">case</span> ID_TF: {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* tf = <span class="keyword">new</span> <a class="code" href="class_transfer_function.html">TransferFunction</a>(m_lastElementID);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_elementList.push_back(tf);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">case</span> ID_SUM: {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="class_sum.html">Sum</a>* sum = <span class="keyword">new</span> <a class="code" href="class_sum.html">Sum</a>(m_lastElementID);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_elementList.push_back(sum);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">case</span> ID_CONST: {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="class_constant.html">Constant</a>* constant = <span class="keyword">new</span> <a class="code" href="class_constant.html">Constant</a>(m_lastElementID);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_elementList.push_back(constant);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">case</span> ID_LIMITER: {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="class_limiter.html">Limiter</a>* limiter = <span class="keyword">new</span> <a class="code" href="class_limiter.html">Limiter</a>(m_lastElementID);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  m_elementList.push_back(limiter);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">case</span> ID_GAIN: {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="class_gain.html">Gain</a>* gain = <span class="keyword">new</span> <a class="code" href="class_gain.html">Gain</a>(m_lastElementID);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  m_elementList.push_back(gain);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">case</span> ID_MULT: {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="class_multiplier.html">Multiplier</a>* mult = <span class="keyword">new</span> <a class="code" href="class_multiplier.html">Multiplier</a>(m_lastElementID);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  m_elementList.push_back(mult);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">case</span> ID_EXP: {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="class_exponential.html">Exponential</a>* exp = <span class="keyword">new</span> <a class="code" href="class_exponential.html">Exponential</a>(m_lastElementID);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  m_elementList.push_back(exp);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">case</span> ID_RATELIM: {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="class_rate_limiter.html">RateLimiter</a>* rateLim = <span class="keyword">new</span> <a class="code" href="class_rate_limiter.html">RateLimiter</a>(m_lastElementID);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  m_elementList.push_back(rateLim);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  m_lastElementID++;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="keywordtype">void</span> ControlEditor::OnPaint(wxPaintEvent& event)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  wxPaintDC dc(m_glCanvas);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  m_glContext->SetCurrent(*m_glCanvas);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  SetViewport();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="comment">// Set GLCanvas scale and translation.</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); <span class="comment">// Scale</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  glTranslated(m_camera->GetTranslation().m_x, m_camera->GetTranslation().m_y, 0.0); <span class="comment">// Translation</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *it;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  line-><a class="code" href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">Draw</a>(m_camera->GetTranslation(), m_camera->GetScale());</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  element-><a class="code" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Draw</a>(m_camera->GetTranslation(), m_camera->GetScale());</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">// Selection rectangle</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  glLineWidth(1.0);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  glColor4d(0.0, 0.5, 1.0, 1.0);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  glBegin(GL_LINE_LOOP);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  glEnd();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  glColor4d(0.0, 0.5, 1.0, 0.3);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  glBegin(GL_QUADS);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  glEnd();</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  glFlush(); <span class="comment">// Sends all pending information directly to the GPU.</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  m_glCanvas->SwapBuffers();</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="keywordtype">void</span> ControlEditor::OnDoubleClick(wxMouseEvent& event)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  wxPoint2DDouble clickPoint = <span class="keyword">event</span>.GetPosition();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">if</span>(m_mode == MODE_EDIT) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  element-><a class="code" href="class_element.html#ae1652eded3ccbd241a783691117418b2">ShowForm</a>(<span class="keyword">this</span>, element);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  CheckConnections();</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = childList.begin(), itEndC = childList.end(); itC != itEndC; ++itC) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  line->UpdatePoints();</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">if</span>(redraw) Redraw();</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="keywordtype">void</span> ControlEditor::OnLeftClickDown(wxMouseEvent& event)</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  wxPoint2DDouble clickPoint = <span class="keyword">event</span>.GetPosition();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordtype">bool</span> foundElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT) {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordtype">bool</span> foundNode = <span class="keyword">false</span>;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keyword">auto</span> nodeList = element->GetNodeList();</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = nodeList.begin(), itNEnd = nodeList.end(); itN != itNEnd; ++itN) {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">if</span>(node->Contains(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  m_mode = MODE_INSERT_LINE;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = <span class="keyword">new</span> <a class="code" href="class_connection_line.html">ConnectionLine</a>(node, m_lastElementID);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  m_lastElementID++;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  m_connectionList.push_back(line);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  element-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(line);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  line-><a class="code" href="class_element.html#a569178e9138490a981511a644536c0f9">AddParent</a>(element);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  foundNode = <span class="keyword">true</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span>(!foundNode) {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="comment">// Set movement initial position (not necessarily will be moved).</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  element-><a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="comment">// Click in an element.</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  m_mode = MODE_MOVE_ELEMENT;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">if</span>(m_mode != MODE_INSERT_LINE) {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *it;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  line-><a class="code" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36">StartMove</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f">Contains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  line-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  m_mode = MODE_MOVE_LINE;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  m_mode = MODE_SELECTION_RECT;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  m_startSelRect = m_camera->ScreenToWorld(clickPoint);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  Redraw();</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="keywordtype">void</span> ControlEditor::OnLeftClickUp(wxMouseEvent& event)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordtype">bool</span> foundNode = <span class="keyword">false</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; it++) {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT_LINE) {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keyword">auto</span> nodeList = element->GetNodeList();</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = nodeList.begin(), itNEnd = nodeList.end(); itN != itNEnd; ++itN) {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">if</span>(node->Contains(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *(m_connectionList.end() - 1);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span>(line->AppendNode(node, element)) {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  line-><a class="code" href="class_element.html#a569178e9138490a981511a644536c0f9">AddParent</a>(element);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  element-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(line);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  line->UpdatePoints();</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  foundNode = <span class="keyword">true</span>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode == MODE_SELECTION_RECT) {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(m_selectionRect)) {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">if</span>(!element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT_LINE && !foundNode && it != (itEnd - 1)) {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">if</span>(cLine-><a class="code" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* iLine = *(m_connectionList.end() - 1);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">if</span>(iLine->SetParentLine(cLine)) {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  cLine-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(iLine);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  iLine->UpdatePoints();</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  foundNode = <span class="keyword">true</span>;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode == MODE_SELECTION_RECT) {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">if</span>(cLine-><a class="code" href="class_connection_line.html#aaa3e63c2e48338e324ee7b58911c86b6">Intersects</a>(m_selectionRect)) {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  cLine-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  cLine-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">if</span>(!cLine-><a class="code" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  cLine-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> </div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  m_selectionRect = wxRect2DDouble(0, 0, 0, 0);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT_LINE && !foundNode) {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *(m_connectionList.end() - 1);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="comment">// Free nodes</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keyword">auto</span> nodeList = cLine->GetNodeList();</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = nodeList.begin(), itEndN = nodeList.end(); itN != itEndN; ++itN) {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  node->SetConnected(<span class="keyword">false</span>);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="comment">// Remove the associated child from parents.</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keyword">auto</span> parentList = cLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = parentList.begin(), itEnd = parentList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  element-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(cLine);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  m_connectionList.pop_back();</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">if</span>(cLine) <span class="keyword">delete</span> cLine;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode != MODE_INSERT) {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> </div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  Redraw();</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> </div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="keywordtype">void</span> ControlEditor::OnMiddleDown(wxMouseEvent& event)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="comment">// Set to drag mode.</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">case</span> MODE_INSERT: {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  m_mode = MODE_DRAG_INSERT;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  m_mode = MODE_DRAG_PASTE;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  m_mode = MODE_DRAG;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  m_camera->StartTranslation(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> </div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="keywordtype">void</span> ControlEditor::OnMiddleUp(wxMouseEvent& event)</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT: {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  m_mode = MODE_PASTE;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">case</span> MODE_INSERT:</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="comment">// Does nothing.</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> </div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="keywordtype">void</span> ControlEditor::OnMouseMotion(wxMouseEvent& event)</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  wxPoint2DDouble clickPoint = <span class="keyword">event</span>.GetPosition();</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">case</span> MODE_INSERT: {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <a class="code" href="class_element.html">Element</a>* newElement = *(m_elementList.end() - 1); <span class="comment">// Get the last element in the list.</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  newElement-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">case</span> MODE_INSERT_LINE: {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *(m_connectionList.end() - 1);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  line->SetTemporarySecondPoint(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  line->UpdatePoints();</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">case</span> MODE_DRAG:</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT:</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  m_camera->SetTranslation(clickPoint);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordflow">case</span> MODE_MOVE_ELEMENT: {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; it++) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  element-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = childList.begin(), itEndC = childList.end(); itC != itEndC; itC++) {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  line->UpdatePoints();</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  }</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  }</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">case</span> MODE_MOVE_LINE: {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; it++) {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *it;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  line-><a class="code" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">Move</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">case</span> MODE_SELECTION_RECT: {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  wxPoint2DDouble currentPos = m_camera->ScreenToWorld(clickPoint);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordtype">double</span> x, y, w, h;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">if</span>(currentPos.m_x < m_startSelRect.m_x) {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  x = currentPos.m_x;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  w = m_startSelRect.m_x - currentPos.m_x;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  x = m_startSelRect.m_x;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  w = currentPos.m_x - m_startSelRect.m_x;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">if</span>(currentPos.m_y < m_startSelRect.m_y) {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  y = currentPos.m_y;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  h = m_startSelRect.m_y - currentPos.m_y;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  y = m_startSelRect.m_y;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  h = currentPos.m_y - m_startSelRect.m_y;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  m_selectionRect = wxRect2DDouble(x, y, w, h);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> </div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">if</span>(redraw) Redraw();</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> </div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <span class="keywordtype">void</span> ControlEditor::OnScroll(wxMouseEvent& event)</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordflow">if</span>(event.GetWheelRotation() > 0)</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  m_camera->SetScale(event.GetPosition(), +0.05);</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  m_camera->SetScale(event.GetPosition(), -0.05);</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> </div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  Redraw();</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> </div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="keywordtype">void</span> ControlEditor::OnIdle(wxIdleEvent& event) { ConsolidateTexts(); }</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="keywordtype">void</span> ControlEditor::OnKeyDown(wxKeyEvent& event)</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordtype">char</span> key = <span class="keyword">event</span>.GetUnicodeKey();</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">if</span>(key != WXK_NONE) {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">switch</span>(key) {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">case</span> WXK_DELETE: <span class="comment">// Delete selected elements.</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  DeleteSelectedElements();</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">case</span> <span class="charliteral">'R'</span>: <span class="comment">// Rotate the selected elements.</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  {</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  RotateSelectedElements(event.GetModifiers() != wxMOD_SHIFT);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordflow">case</span> <span class="charliteral">'L'</span>: {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="comment">// tests</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> }</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> </div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="keywordtype">void</span> ControlEditor::RotateSelectedElements(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  element-><a class="code" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Rotate</a>(clockwise);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = childList.begin(), itEndC = childList.end(); itC != itEndC; itC++) {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  line->UpdatePoints();</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  }</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  }</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  Redraw();</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> }</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> </div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="keywordtype">void</span> ControlEditor::DeleteSelectedElements()</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> {</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="comment">// Remove child/parent.</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = childList.begin(), itEnd = childList.end(); itC != itEnd; ++itC) {</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="comment">// The child is always a connection line.</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="comment">// Delete the connection line.</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itCo = m_connectionList.begin(); itCo != m_connectionList.end(); ++itCo) {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *itCo;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keywordflow">if</span>(line == child) {</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  itCo = DeleteLineFromList(itCo);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  }</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  }</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  m_elementList.erase(it--);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">if</span>(element) <span class="keyword">delete</span> element;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  }</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  }</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span> </div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(); it != m_connectionList.end(); ++it) {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *it;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  it = DeleteLineFromList(it);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  Redraw();</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> </div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> std::vector<ConnectionLine*>::iterator ControlEditor::DeleteLineFromList(std::vector<ConnectionLine*>::iterator& it)</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keyword">auto</span> childList = cLine->GetLineChildList();</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = childList.begin(), itEndC = childList.end(); itC != itEndC; ++itC) {</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = *itC;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itL = m_connectionList.begin(); itL != m_connectionList.end(); ++itL) {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* childOnList = *itL;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keywordflow">if</span>(childOnList == child) {</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  itL = DeleteLineFromList(itL);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  }</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  }</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  }</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="comment">// Remove</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keyword">auto</span> parentList = cLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itP = parentList.begin(), itEnd = parentList.end(); itP != itEnd; ++itP) {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <a class="code" href="class_element.html">Element</a>* parent = *itP;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordflow">if</span>(parent) parent-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(cLine);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">if</span>(cLine->GetParentLine()) cLine->GetParentLine()-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(cLine);</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="comment">// Free nodes</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keyword">auto</span> nodeList = cLine->GetNodeList();</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = nodeList.begin(), itEndN = nodeList.end(); itN != itEndN; ++itN) {</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  node->SetConnected(<span class="keyword">false</span>);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  }</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  m_connectionList.erase(it--);</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="keywordflow">if</span>(cLine) <span class="keyword">delete</span> cLine;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">return</span> it;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> }</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> </div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> <span class="keywordtype">void</span> ControlEditor::CheckConnections()</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(); it != m_connectionList.end(); ++it) {</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keywordflow">if</span>(cLine->GetType() == ConnectionLine::ELEMENT_ELEMENT) {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">if</span>(cLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size() < 2) {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  it = DeleteLineFromList(it);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  }</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  }</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> }</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <span class="keywordtype">void</span> ControlEditor::OnExportClick(wxCommandEvent& event)</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(<span class="keyword">this</span>);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> </div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  wxFileDialog saveFileDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Save CTL file"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>, <span class="stringliteral">"CTL files (*.ctl)|*.ctl"</span>,</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> </div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  fileHandling.SaveControl(saveFileDialog.GetPath());</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  wxFileName fileName(saveFileDialog.GetPath());</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> }</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> </div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> <span class="keywordtype">void</span> ControlEditor::OnImportClick(wxCommandEvent& event)</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> {</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  wxFileDialog openFileDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Open CTL file"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>, <span class="stringliteral">"CTL files (*.ctl)|*.ctl"</span>,</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  wxFD_OPEN | wxFD_FILE_MUST_EXIST);</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">if</span>(openFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  wxFileName fileName(openFileDialog.GetPath());</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> </div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(<span class="keyword">this</span>);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">if</span>(!fileHandling.OpenControl(fileName, m_elementList, m_connectionList)) {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to open the selected file."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> </div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  SetLastElementID();</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  Redraw();</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> }</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> </div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="keywordtype">void</span> ControlEditor::OnTestClick(wxCommandEvent& event)</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> {</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <a class="code" href="class_control_system_test.html">ControlSystemTest</a> csTest(<span class="keyword">this</span>, &m_inputType, &m_startTime, &m_slope, &m_timeStep, &m_simTime);</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="keywordflow">if</span>(csTest.ShowModal() == wxID_OK) {</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keywordtype">double</span> printStep = 1e-3;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <span class="keywordtype">double</span> pdbStep = 1e-1;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  wxProgressDialog pbd(_(<span class="stringliteral">"Test"</span>), _(<span class="stringliteral">"Initializing..."</span>), 100, <span class="keyword">this</span>,</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_CAN_ABORT | wxPD_SMOOTH);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a> solver(<span class="keyword">this</span>, m_timeStep, 1e-5);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">if</span>(solver.IsOK()) {</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="keywordtype">bool</span> simStopped = <span class="keyword">false</span>;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordtype">double</span> currentTime = 0.0;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="keywordtype">double</span> printTime = 0.0;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordtype">double</span> pdbTime = 0.0;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  std::vector<double> time;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  std::vector<double> solution;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  std::vector<double> inputV;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keywordflow">while</span>(currentTime <= m_simTime) {</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="keywordtype">double</span> input = 0.0;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="keywordflow">if</span>(currentTime >= m_startTime) {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keywordflow">switch</span>(m_inputType) {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  input = m_slope;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  input = m_slope * (currentTime - m_startTime);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  input = m_slope * std::pow(currentTime - m_startTime, 2);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  input = 0.0;</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  }</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  }</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> </div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  solver.SolveNextStep(input);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> </div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keywordflow">if</span>(printTime >= printStep) {</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  time.push_back(currentTime);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  solution.push_back(solver.GetLastSolution());</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  inputV.push_back(input);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  printTime = 0.0;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  }</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> </div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keywordflow">if</span>(pdbTime > pdbStep) {</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="keywordflow">if</span>(!pbd.Update((currentTime / m_simTime) * 100, wxString::Format(<span class="stringliteral">"Time = %.2fs"</span>, currentTime))) {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  pbd.Update(100);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  simStopped = <span class="keyword">true</span>;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  currentTime = m_simTime;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  }</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  pdbTime = 0.0;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  }</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span> </div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  printTime += m_timeStep;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  currentTime += m_timeStep;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  pdbTime += m_timeStep;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keywordflow">if</span>(!simStopped) {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  std::vector<ElementPlotData> epdList;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a> curveData(_(<span class="stringliteral">"I/O"</span>), ElementPlotData::CT_TEST);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  curveData.AddData(inputV, _(<span class="stringliteral">"Input"</span>));</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  curveData.AddData(solution, _(<span class="stringliteral">"Output"</span>));</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  curveData.SetPlot(0);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  curveData.SetColour(0, *wxRED);</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  curveData.SetPlot(1);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  curveData.SetColour(1, *wxBLUE);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> </div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  epdList.push_back(curveData);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> </div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <a class="code" href="class_chart_view.html">ChartView</a>* cView = <span class="keyword">new</span> <a class="code" href="class_chart_view.html">ChartView</a>(<span class="keyword">this</span>, epdList, time);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  cView->Show();</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  cView->UpdatePlot();</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  }</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to solve the control system"</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  }</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span> }</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> </div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> <span class="keywordtype">void</span> ControlEditor::OnClose(wxCloseEvent& event)</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> {</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="keywordflow">if</span>(m_ctrlContainer) {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  m_ctrlContainer->FillContainer(<span class="keyword">this</span>);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  }</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> }</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> </div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="keywordtype">void</span> ControlEditor::ConsolidateTexts()</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> {</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="comment">// Solve wxGLString bug.</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keywordflow">if</span>(m_firstDraw) {</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* tf = <span class="keyword">new</span> <a class="code" href="class_transfer_function.html">TransferFunction</a>(0);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  m_elementList.push_back(tf);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  element->UpdateText();</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  }</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  Redraw();</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  m_elementList.pop_back();</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keyword">delete</span> tf;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  m_firstDraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  }</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> }</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> </div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="keywordtype">void</span> ControlEditor::SetLastElementID()</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> {</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = 0;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keywordtype">int</span> elementID = (*it)->GetID();</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordflow">if</span>(<span class="keywordtype">id</span> < elementID) <span class="keywordtype">id</span> = elementID;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  }</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordtype">int</span> elementID = (*it)->GetID();</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <span class="keywordflow">if</span>(<span class="keywordtype">id</span> < elementID) <span class="keywordtype">id</span> = elementID;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  }</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  m_lastElementID = ++id;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> }</div><div class="ttc" id="class_element_html_abe884d99d12d5252e18956162115b025"><div class="ttname"><a href="class_element.html#abe884d99d12d5252e18956162115b025">Element::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00123">Element.cpp:123</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_control_editor_8h.html">ControlEditor.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="_file_handing_8h.html">FileHanding.h</a>"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="_camera_8h.html">Camera.h</a>"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="_transfer_function_8h.html">TransferFunction.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="_connection_line_8h.html">ConnectionLine.h</a>"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="_sum_8h.html">Sum.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="_multiplier_8h.html">Multiplier.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="_limiter_8h.html">Limiter.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="_rate_limiter_8h.html">RateLimiter.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="_exponential_8h.html">Exponential.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="_constant_8h.html">Constant.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="_gain_8h.html">Gain.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="_control_element_solver_8h.html">ControlElementSolver.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include "<a class="code" href="_control_element_container_8h.html">ControlElementContainer.h</a>"</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="_chart_view_8h.html">ChartView.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include "<a class="code" href="_element_plot_data_8h.html">ElementPlotData.h</a>"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> ControlElementButton::ControlElementButton(wxWindow* parent, wxString label, wxImage image, wxWindowID <span class="keywordtype">id</span>)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  : wxWindow(parent, id)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  SetBackgroundColour(*wxWHITE);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// m_font = wxFont(8, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_label = label;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_image = image;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_imageSize = wxSize(image.GetWidth(), image.GetHeight());</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Calculate label size.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxScreenDC dc;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  dc.SetFont(m_font);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  wxSize textSize = dc.GetTextExtent(label);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">int</span> buttonWidth = 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(textSize.GetWidth() > m_imageSize.GetWidth()) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  buttonWidth = textSize.GetWidth();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_imagePosition = wxPoint((buttonWidth - m_imageSize.GetWidth()) / 2 + m_borderSize, m_borderSize);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_labelPosition = wxPoint(m_borderSize, m_imageSize.GetHeight() + m_borderSize);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  buttonWidth = m_imageSize.GetWidth();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_imagePosition = wxPoint(m_borderSize, m_borderSize);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_labelPosition =</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  wxPoint((buttonWidth - textSize.GetWidth()) / 2 + m_borderSize, m_imageSize.GetHeight() + m_borderSize);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_buttonSize =</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  wxSize(buttonWidth + 2 * m_borderSize, textSize.GetHeight() + m_imageSize.GetHeight() + 2 * m_borderSize);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  SetMinSize(m_buttonSize + wxSize(m_borderSize, m_borderSize));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// Events.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  Bind(wxEVT_PAINT, &ControlElementButton::OnPaint, <span class="keyword">this</span>);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  Bind(wxEVT_ENTER_WINDOW, &ControlElementButton::OnMouseEnter, <span class="keyword">this</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  Bind(wxEVT_LEAVE_WINDOW, &ControlElementButton::OnMouseLeave, <span class="keyword">this</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  Bind(wxEVT_LEFT_DOWN, &ControlElementButton::OnLeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  Bind(wxEVT_LEFT_UP, &ControlElementButton::OnLeftClickUp, <span class="keyword">this</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> ControlElementButton::~ControlElementButton() {}</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">void</span> ControlElementButton::OnPaint(wxPaintEvent& event)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  wxPaintDC dc(<span class="keyword">this</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  wxGraphicsContext* gc = wxGraphicsContext::Create(dc);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(gc) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(m_mouseAbove) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  gc->SetPen(wxPen(wxColour(0, 125, 255, 255), m_borderSize - 1));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  gc->SetBrush(wxBrush(wxColour(0, 125, 255, 100)));</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  gc->SetPen(*wxTRANSPARENT_PEN);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  gc->SetBrush(wxBrush(wxColour(0, 125, 255, 70)));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  gc->DrawRectangle(m_borderSize / 2, m_borderSize / 2, m_buttonSize.GetWidth(), m_buttonSize.GetHeight());</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  gc->DrawBitmap(gc->CreateBitmapFromImage(m_image), m_imagePosition.x, m_imagePosition.y, m_imageSize.GetWidth(),</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_imageSize.GetHeight());</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  gc->SetFont(m_font, *wxBLACK);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  gc->DrawText(m_label, m_labelPosition.x, m_labelPosition.y);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">delete</span> gc;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keywordtype">void</span> ControlElementButton::OnMouseEnter(wxMouseEvent& event)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_mouseAbove = <span class="keyword">true</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  Refresh();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keywordtype">void</span> ControlElementButton::OnMouseLeave(wxMouseEvent& event)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_mouseAbove = <span class="keyword">false</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  Refresh();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="keywordtype">void</span> ControlElementButton::OnLeftClickDown(wxMouseEvent& event)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_selected = <span class="keyword">true</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  Refresh();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="keywordtype">void</span> ControlElementButton::OnLeftClickUp(wxMouseEvent& event)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_selected = <span class="keyword">false</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  Refresh();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> ControlEditor::ControlEditor(wxWindow* parent, <span class="keywordtype">int</span> ioflags) : <a class="code" href="class_control_editor_base.html">ControlEditorBase</a>(parent)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  BuildControlElementPanel();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_glContext = <span class="keyword">new</span> wxGLContext(m_glCanvas);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_camera = <span class="keyword">new</span> <a class="code" href="class_camera.html">Camera</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_selectionRect = wxRect2DDouble(0, 0, 0, 0);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// m_camera->SetScale(1.2);</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_ioFlags = ioflags;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> ControlEditor::~ControlEditor()</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="comment">// m_tfButton->Disconnect(wxEVT_LEFT_DOWN, wxMouseEventHandler(ControlEditor::LeftClickDown), m_tfButton, this);</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="keywordtype">void</span> ControlEditor::BuildControlElementPanel()</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_panelControlElements->SetDoubleBuffered(<span class="keyword">true</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  wxWrapSizer* wrapSizer = <span class="keyword">new</span> wxWrapSizer();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_panelControlElements->SetSizer(wrapSizer);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  wxFileName exeFileName(wxStandardPaths::Get().GetExecutablePath());</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  wxString exePath = exeFileName.GetPath();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* ioButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_panelControlElements, _(<span class="stringliteral">"In/Out"</span>), wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\io.png"</span>), ID_IO);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  wrapSizer->Add(ioButton, 0, wxALL, 5);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  ioButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* tfButton =</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(m_panelControlElements, _(<span class="stringliteral">"Transfer fcn"</span>),</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\transferFunc.png"</span>), ID_TF);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  wrapSizer->Add(tfButton, 0, wxALL, 5);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  tfButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* sumButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_panelControlElements, _(<span class="stringliteral">"Sum"</span>), wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\sum.png"</span>), ID_SUM);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  wrapSizer->Add(sumButton, 0, wxALL, 5);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  sumButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* constButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  m_panelControlElements, _(<span class="stringliteral">"Constant"</span>), wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\value.png"</span>), ID_CONST);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  wrapSizer->Add(constButton, 0, wxALL, 5);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  constButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* limButton =</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(m_panelControlElements, _(<span class="stringliteral">"Limiter"</span>),</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\limiter.png"</span>), ID_LIMITER);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  wrapSizer->Add(limButton, 0, wxALL, 5);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  limButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* gainButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  m_panelControlElements, _(<span class="stringliteral">"Gain"</span>), wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\gain.png"</span>), ID_GAIN);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  wrapSizer->Add(gainButton, 0, wxALL, 5);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  gainButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* multButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  m_panelControlElements, _(<span class="stringliteral">"Multiplier"</span>), wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\mult.png"</span>), ID_MULT);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  wrapSizer->Add(multButton, 0, wxALL, 5);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  multButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* satButton = <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  m_panelControlElements, _(<span class="stringliteral">"Exponential"</span>), wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\sat.png"</span>), ID_EXP);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  wrapSizer->Add(satButton, 0, wxALL, 5);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  satButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>* rateLimButton =</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">new</span> <a class="code" href="class_control_element_button.html">ControlElementButton</a>(m_panelControlElements, _(<span class="stringliteral">"Rate limiter"</span>),</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\control\\rateLimiter.png"</span>), ID_RATELIM);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  wrapSizer->Add(rateLimButton, 0, wxALL, 5);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  rateLimButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, <span class="keyword">this</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keywordtype">void</span> ControlEditor::LeftClickDown(wxMouseEvent& event)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  AddElement(static_cast<ControlElementButtonID>(event.GetId()));</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="keywordtype">void</span> ControlEditor::SetViewport()</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  glClearColor(1.0, 1.0, 1.0, 1.0); <span class="comment">// White background.</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  glClear(GL_COLOR_BUFFER_BIT);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  glDisable(GL_DEPTH_TEST);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  glEnable(GL_COLOR_MATERIAL);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  glEnable(GL_BLEND);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  glEnable(GL_LINE_SMOOTH);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordtype">double</span> width = m_glCanvas->GetSize().x - 1;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordtype">double</span> height = m_glCanvas->GetSize().y - 1;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">// Viewport fit the screen.</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  glViewport(0, 0, width, height);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  glMatrixMode(GL_PROJECTION);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  glLoadIdentity();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  gluOrtho2D(0.0, width, height, 0.0);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  glMatrixMode(GL_MODELVIEW);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  glLoadIdentity();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="keywordtype">void</span> ControlEditor::AddElement(ControlElementButtonID <span class="keywordtype">id</span>)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">switch</span>(<span class="keywordtype">id</span>) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">case</span> ID_IO: {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* io = <span class="keyword">new</span> <a class="code" href="class_i_o_control.html">IOControl</a>(m_ioFlags, m_lastElementID);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_elementList.push_back(io);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">case</span> ID_TF: {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* tf = <span class="keyword">new</span> <a class="code" href="class_transfer_function.html">TransferFunction</a>(m_lastElementID);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_elementList.push_back(tf);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">case</span> ID_SUM: {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="class_sum.html">Sum</a>* sum = <span class="keyword">new</span> <a class="code" href="class_sum.html">Sum</a>(m_lastElementID);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_elementList.push_back(sum);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">case</span> ID_CONST: {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="class_constant.html">Constant</a>* constant = <span class="keyword">new</span> <a class="code" href="class_constant.html">Constant</a>(m_lastElementID);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_elementList.push_back(constant);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">case</span> ID_LIMITER: {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="class_limiter.html">Limiter</a>* limiter = <span class="keyword">new</span> <a class="code" href="class_limiter.html">Limiter</a>(m_lastElementID);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  m_elementList.push_back(limiter);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">case</span> ID_GAIN: {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="class_gain.html">Gain</a>* gain = <span class="keyword">new</span> <a class="code" href="class_gain.html">Gain</a>(m_lastElementID);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  m_elementList.push_back(gain);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">case</span> ID_MULT: {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <a class="code" href="class_multiplier.html">Multiplier</a>* mult = <span class="keyword">new</span> <a class="code" href="class_multiplier.html">Multiplier</a>(m_lastElementID);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  m_elementList.push_back(mult);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">case</span> ID_EXP: {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="class_exponential.html">Exponential</a>* exp = <span class="keyword">new</span> <a class="code" href="class_exponential.html">Exponential</a>(m_lastElementID);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  m_elementList.push_back(exp);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">case</span> ID_RATELIM: {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="class_rate_limiter.html">RateLimiter</a>* rateLim = <span class="keyword">new</span> <a class="code" href="class_rate_limiter.html">RateLimiter</a>(m_lastElementID);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  m_elementList.push_back(rateLim);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  m_lastElementID++;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="keywordtype">void</span> ControlEditor::OnPaint(wxPaintEvent& event)</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  wxPaintDC dc(m_glCanvas);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  m_glContext->SetCurrent(*m_glCanvas);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  SetViewport();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="comment">// Set GLCanvas scale and translation.</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); <span class="comment">// Scale</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  glTranslated(m_camera->GetTranslation().m_x, m_camera->GetTranslation().m_y, 0.0); <span class="comment">// Translation</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *it;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  line-><a class="code" href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">Draw</a>(m_camera->GetTranslation(), m_camera->GetScale());</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  element-><a class="code" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Draw</a>(m_camera->GetTranslation(), m_camera->GetScale());</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">// Selection rectangle</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  glLineWidth(1.0);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  glColor4d(0.0, 0.5, 1.0, 1.0);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  glBegin(GL_LINE_LOOP);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  glEnd();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  glColor4d(0.0, 0.5, 1.0, 0.3);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  glBegin(GL_QUADS);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  glEnd();</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  glFlush(); <span class="comment">// Sends all pending information directly to the GPU.</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  m_glCanvas->SwapBuffers();</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="keywordtype">void</span> ControlEditor::OnDoubleClick(wxMouseEvent& event)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  wxPoint2DDouble clickPoint = <span class="keyword">event</span>.GetPosition();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">if</span>(m_mode == MODE_EDIT) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  element-><a class="code" href="class_element.html#ae1652eded3ccbd241a783691117418b2">ShowForm</a>(<span class="keyword">this</span>, element);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  CheckConnections();</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = childList.begin(), itEndC = childList.end(); itC != itEndC; ++itC) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  line->UpdatePoints();</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">if</span>(redraw) Redraw();</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="keywordtype">void</span> ControlEditor::OnLeftClickDown(wxMouseEvent& event)</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  wxPoint2DDouble clickPoint = <span class="keyword">event</span>.GetPosition();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordtype">bool</span> foundElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT) {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordtype">bool</span> foundNode = <span class="keyword">false</span>;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keyword">auto</span> nodeList = element->GetNodeList();</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = nodeList.begin(), itNEnd = nodeList.end(); itN != itNEnd; ++itN) {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">if</span>(node->Contains(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  m_mode = MODE_INSERT_LINE;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = <span class="keyword">new</span> <a class="code" href="class_connection_line.html">ConnectionLine</a>(node, m_lastElementID);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  m_lastElementID++;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  m_connectionList.push_back(line);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  element-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(line);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  line-><a class="code" href="class_element.html#a569178e9138490a981511a644536c0f9">AddParent</a>(element);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  foundNode = <span class="keyword">true</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span>(!foundNode) {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="comment">// Set movement initial position (not necessarily will be moved).</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  element-><a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="comment">// Click in an element.</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  }</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  m_mode = MODE_MOVE_ELEMENT;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">if</span>(m_mode != MODE_INSERT_LINE) {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *it;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  line-><a class="code" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36">StartMove</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f">Contains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  line-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  m_mode = MODE_MOVE_LINE;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  m_mode = MODE_SELECTION_RECT;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  m_startSelRect = m_camera->ScreenToWorld(clickPoint);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  Redraw();</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="keywordtype">void</span> ControlEditor::OnLeftClickUp(wxMouseEvent& event)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordtype">bool</span> foundNode = <span class="keyword">false</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; it++) {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT_LINE) {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keyword">auto</span> nodeList = element->GetNodeList();</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = nodeList.begin(), itNEnd = nodeList.end(); itN != itNEnd; ++itN) {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">if</span>(node->Contains(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *(m_connectionList.end() - 1);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span>(line->AppendNode(node, element)) {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  line-><a class="code" href="class_element.html#a569178e9138490a981511a644536c0f9">AddParent</a>(element);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  element-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(line);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  line->UpdatePoints();</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  foundNode = <span class="keyword">true</span>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode == MODE_SELECTION_RECT) {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(m_selectionRect)) {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">if</span>(!element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT_LINE && !foundNode && it != (itEnd - 1)) {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">if</span>(cLine-><a class="code" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* iLine = *(m_connectionList.end() - 1);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">if</span>(iLine->SetParentLine(cLine)) {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  cLine-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(iLine);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  iLine->UpdatePoints();</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  foundNode = <span class="keyword">true</span>;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode == MODE_SELECTION_RECT) {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">if</span>(cLine-><a class="code" href="class_connection_line.html#aaa3e63c2e48338e324ee7b58911c86b6">Intersects</a>(m_selectionRect)) {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  cLine-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  cLine-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">if</span>(!cLine-><a class="code" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  cLine-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> </div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  m_selectionRect = wxRect2DDouble(0, 0, 0, 0);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT_LINE && !foundNode) {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *(m_connectionList.end() - 1);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="comment">// Free nodes</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keyword">auto</span> nodeList = cLine->GetNodeList();</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = nodeList.begin(), itEndN = nodeList.end(); itN != itEndN; ++itN) {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  node->SetConnected(<span class="keyword">false</span>);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="comment">// Remove the associated child from parents.</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keyword">auto</span> parentList = cLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = parentList.begin(), itEnd = parentList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  element-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(cLine);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  m_connectionList.pop_back();</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">if</span>(cLine) <span class="keyword">delete</span> cLine;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode != MODE_INSERT) {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> </div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  Redraw();</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> </div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="keywordtype">void</span> ControlEditor::OnMiddleDown(wxMouseEvent& event)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="comment">// Set to drag mode.</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">case</span> MODE_INSERT: {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  m_mode = MODE_DRAG_INSERT;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  m_mode = MODE_DRAG_PASTE;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  m_mode = MODE_DRAG;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  m_camera->StartTranslation(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> </div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="keywordtype">void</span> ControlEditor::OnMiddleUp(wxMouseEvent& event)</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT: {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  m_mode = MODE_PASTE;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">case</span> MODE_INSERT:</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="comment">// Does nothing.</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> }</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> </div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="keywordtype">void</span> ControlEditor::OnMouseMotion(wxMouseEvent& event)</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  wxPoint2DDouble clickPoint = <span class="keyword">event</span>.GetPosition();</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">case</span> MODE_INSERT: {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <a class="code" href="class_element.html">Element</a>* newElement = *(m_elementList.end() - 1); <span class="comment">// Get the last element in the list.</span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  newElement-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">case</span> MODE_INSERT_LINE: {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *(m_connectionList.end() - 1);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  line->SetTemporarySecondPoint(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  line->UpdatePoints();</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">case</span> MODE_DRAG:</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT:</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  m_camera->SetTranslation(clickPoint);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordflow">case</span> MODE_MOVE_ELEMENT: {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; it++) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  element-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = childList.begin(), itEndC = childList.end(); itC != itEndC; itC++) {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  line->UpdatePoints();</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  }</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  }</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">case</span> MODE_MOVE_LINE: {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; it++) {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *it;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  line-><a class="code" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">Move</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  }</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">case</span> MODE_SELECTION_RECT: {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  wxPoint2DDouble currentPos = m_camera->ScreenToWorld(clickPoint);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordtype">double</span> x, y, w, h;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">if</span>(currentPos.m_x < m_startSelRect.m_x) {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  x = currentPos.m_x;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  w = m_startSelRect.m_x - currentPos.m_x;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  x = m_startSelRect.m_x;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  w = currentPos.m_x - m_startSelRect.m_x;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordflow">if</span>(currentPos.m_y < m_startSelRect.m_y) {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  y = currentPos.m_y;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  h = m_startSelRect.m_y - currentPos.m_y;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  y = m_startSelRect.m_y;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  h = currentPos.m_y - m_startSelRect.m_y;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  m_selectionRect = wxRect2DDouble(x, y, w, h);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> </div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">if</span>(redraw) Redraw();</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span> }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span> </div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <span class="keywordtype">void</span> ControlEditor::OnScroll(wxMouseEvent& event)</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span> {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordflow">if</span>(event.GetWheelRotation() > 0)</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  m_camera->SetScale(event.GetPosition(), +0.05);</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  m_camera->SetScale(event.GetPosition(), -0.05);</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span> </div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  Redraw();</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> </div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="keywordtype">void</span> ControlEditor::OnIdle(wxIdleEvent& event) { ConsolidateTexts(); }</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="keywordtype">void</span> ControlEditor::OnKeyDown(wxKeyEvent& event)</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> {</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordtype">char</span> key = <span class="keyword">event</span>.GetUnicodeKey();</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">if</span>(key != WXK_NONE) {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">switch</span>(key) {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">case</span> WXK_DELETE: <span class="comment">// Delete selected elements.</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  DeleteSelectedElements();</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">case</span> <span class="charliteral">'R'</span>: <span class="comment">// Rotate the selected elements.</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  {</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  RotateSelectedElements(event.GetModifiers() != wxMOD_SHIFT);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordflow">case</span> <span class="charliteral">'L'</span>: {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="comment">// tests</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> }</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> </div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="keywordtype">void</span> ControlEditor::RotateSelectedElements(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  element-><a class="code" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Rotate</a>(clockwise);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = childList.begin(), itEndC = childList.end(); itC != itEndC; itC++) {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  line->UpdatePoints();</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  }</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  }</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  Redraw();</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> }</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> </div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="keywordtype">void</span> ControlEditor::DeleteSelectedElements()</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> {</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="comment">// Remove child/parent.</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = childList.begin(), itEnd = childList.end(); itC != itEnd; ++itC) {</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="comment">// The child is always a connection line.</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="comment">// Delete the connection line.</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itCo = m_connectionList.begin(); itCo != m_connectionList.end(); ++itCo) {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *itCo;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keywordflow">if</span>(line == child) {</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  itCo = DeleteLineFromList(itCo);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  }</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  }</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  m_elementList.erase(it--);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">if</span>(element) <span class="keyword">delete</span> element;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  }</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  }</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span> </div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(); it != m_connectionList.end(); ++it) {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* line = *it;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  it = DeleteLineFromList(it);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  Redraw();</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> </div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> std::vector<ConnectionLine*>::iterator ControlEditor::DeleteLineFromList(std::vector<ConnectionLine*>::iterator& it)</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keyword">auto</span> childList = cLine->GetLineChildList();</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = childList.begin(), itEndC = childList.end(); itC != itEndC; ++itC) {</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = *itC;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itL = m_connectionList.begin(); itL != m_connectionList.end(); ++itL) {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* childOnList = *itL;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keywordflow">if</span>(childOnList == child) {</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  itL = DeleteLineFromList(itL);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  }</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  }</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  }</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <span class="comment">// Remove</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keyword">auto</span> parentList = cLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itP = parentList.begin(), itEnd = parentList.end(); itP != itEnd; ++itP) {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <a class="code" href="class_element.html">Element</a>* parent = *itP;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordflow">if</span>(parent) parent-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(cLine);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">if</span>(cLine->GetParentLine()) cLine->GetParentLine()-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(cLine);</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="comment">// Free nodes</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <span class="keyword">auto</span> nodeList = cLine->GetNodeList();</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = nodeList.begin(), itEndN = nodeList.end(); itN != itEndN; ++itN) {</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  node->SetConnected(<span class="keyword">false</span>);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  }</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  m_connectionList.erase(it--);</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="keywordflow">if</span>(cLine) <span class="keyword">delete</span> cLine;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">return</span> it;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> }</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> </div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> <span class="keywordtype">void</span> ControlEditor::CheckConnections()</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(); it != m_connectionList.end(); ++it) {</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keywordflow">if</span>(cLine->GetType() == ConnectionLine::ELEMENT_ELEMENT) {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">if</span>(cLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size() < 2) {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  it = DeleteLineFromList(it);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  }</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  }</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span> }</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <span class="keywordtype">void</span> ControlEditor::OnExportClick(wxCommandEvent& event)</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span> {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(<span class="keyword">this</span>);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> </div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  wxFileDialog saveFileDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Save CTL file"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>, <span class="stringliteral">"CTL files (*.ctl)|*.ctl"</span>,</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> </div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  fileHandling.SaveControl(saveFileDialog.GetPath());</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  wxFileName fileName(saveFileDialog.GetPath());</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span> }</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> </div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> <span class="keywordtype">void</span> ControlEditor::OnImportClick(wxCommandEvent& event)</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> {</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  wxFileDialog openFileDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Open CTL file"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>, <span class="stringliteral">"CTL files (*.ctl)|*.ctl"</span>,</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  wxFD_OPEN | wxFD_FILE_MUST_EXIST);</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">if</span>(openFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  wxFileName fileName(openFileDialog.GetPath());</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span> </div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(<span class="keyword">this</span>);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">if</span>(!fileHandling.OpenControl(fileName, m_elementList, m_connectionList)) {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to open the selected file."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  }</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span> </div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  SetLastElementID();</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  Redraw();</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span> }</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span> </div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="keywordtype">void</span> ControlEditor::OnTestClick(wxCommandEvent& event)</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> {</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <a class="code" href="class_control_system_test.html">ControlSystemTest</a> csTest(<span class="keyword">this</span>, &m_inputType, &m_startTime, &m_slope, &m_timeStep, &m_simTime);</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="keywordflow">if</span>(csTest.ShowModal() == wxID_OK) {</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keywordtype">double</span> printStep = 1e-3;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <span class="keywordtype">double</span> pdbStep = 1e-1;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span> </div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  wxProgressDialog pbd(_(<span class="stringliteral">"Test"</span>), _(<span class="stringliteral">"Initializing..."</span>), 100, <span class="keyword">this</span>,</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_CAN_ABORT | wxPD_SMOOTH);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a> solver(<span class="keyword">this</span>, m_timeStep, 1e-5);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">if</span>(solver.IsOK()) {</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="keywordtype">bool</span> simStopped = <span class="keyword">false</span>;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordtype">double</span> currentTime = 0.0;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="keywordtype">double</span> printTime = 0.0;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordtype">double</span> pdbTime = 0.0;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  std::vector<double> time;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  std::vector<double> solution;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  std::vector<double> inputV;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keywordflow">while</span>(currentTime <= m_simTime) {</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="keywordtype">double</span> input = 0.0;</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="keywordflow">if</span>(currentTime >= m_startTime) {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keywordflow">switch</span>(m_inputType) {</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  input = m_slope;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  input = m_slope * (currentTime - m_startTime);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  input = m_slope * std::pow(currentTime - m_startTime, 2);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  input = 0.0;</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  }</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  }</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> </div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  solver.SolveNextStep(input);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> </div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keywordflow">if</span>(printTime >= printStep) {</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  time.push_back(currentTime);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  solution.push_back(solver.GetLastSolution());</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  inputV.push_back(input);</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  printTime = 0.0;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  }</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> </div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keywordflow">if</span>(pdbTime > pdbStep) {</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="keywordflow">if</span>(!pbd.Update((currentTime / m_simTime) * 100, wxString::Format(<span class="stringliteral">"Time = %.2fs"</span>, currentTime))) {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  pbd.Update(100);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  simStopped = <span class="keyword">true</span>;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  currentTime = m_simTime;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  }</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  pdbTime = 0.0;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  }</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span> </div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  printTime += m_timeStep;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  currentTime += m_timeStep;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  pdbTime += m_timeStep;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keywordflow">if</span>(!simStopped) {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  std::vector<ElementPlotData> epdList;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a> curveData(_(<span class="stringliteral">"I/O"</span>), ElementPlotData::CT_TEST);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  curveData.AddData(inputV, _(<span class="stringliteral">"Input"</span>));</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  curveData.AddData(solution, _(<span class="stringliteral">"Output"</span>));</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  curveData.SetPlot(0);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  curveData.SetColour(0, *wxRED);</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  curveData.SetPlot(1);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  curveData.SetColour(1, *wxBLUE);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> </div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  epdList.push_back(curveData);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> </div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <a class="code" href="class_chart_view.html">ChartView</a>* cView = <span class="keyword">new</span> <a class="code" href="class_chart_view.html">ChartView</a>(<span class="keyword">this</span>, epdList, time);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  cView->Show();</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  cView->UpdatePlot();</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  }</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to solve the control system"</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  }</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span> }</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> </div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> <span class="keywordtype">void</span> ControlEditor::OnClose(wxCloseEvent& event)</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> {</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="keywordflow">if</span>(m_ctrlContainer) {</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  m_ctrlContainer->FillContainer(<span class="keyword">this</span>);</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  }</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> }</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span> </div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="keywordtype">void</span> ControlEditor::ConsolidateTexts()</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> {</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="comment">// Solve wxGLString bug.</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keywordflow">if</span>(m_firstDraw) {</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* tf = <span class="keyword">new</span> <a class="code" href="class_transfer_function.html">TransferFunction</a>(0);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  m_elementList.push_back(tf);</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  element->UpdateText();</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  }</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  Redraw();</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  m_elementList.pop_back();</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keyword">delete</span> tf;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  m_firstDraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  }</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span> }</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span> </div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="keywordtype">void</span> ControlEditor::SetLastElementID()</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span> {</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = 0;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keywordtype">int</span> elementID = (*it)->GetID();</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordflow">if</span>(<span class="keywordtype">id</span> < elementID) <span class="keywordtype">id</span> = elementID;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  }</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordtype">int</span> elementID = (*it)->GetID();</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <span class="keywordflow">if</span>(<span class="keywordtype">id</span> < elementID) <span class="keywordtype">id</span> = elementID;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  }</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  m_lastElementID = ++id;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> }</div><div class="ttc" id="class_element_html_abe884d99d12d5252e18956162115b025"><div class="ttname"><a href="class_element.html#abe884d99d12d5252e18956162115b025">Element::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00123">Element.cpp:123</a></div></div> <div class="ttc" id="class_multiplier_html"><div class="ttname"><a href="class_multiplier.html">Multiplier</a></div><div class="ttdoc">Multiplies two inputs. </div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00032">Multiplier.h:32</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_element_html_a5279e5a513391d399d576bcb83df736b"><div class="ttname"><a href="class_element.html#a5279e5a513391d399d576bcb83df736b">Element::SetSelected</a></div><div class="ttdeci">void SetSelected(bool selected=true)</div><div class="ttdoc">Set element selection. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00146">Element.h:146</a></div></div> <div class="ttc" id="class_control_element_solver_html"><div class="ttname"><a href="class_control_element_solver.html">ControlElementSolver</a></div><div class="ttdoc">Solves in the time the control system. Can solve the control system directly from a ControlEditor or ...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00045">ControlElementSolver.h:45</a></div></div> -<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00026">Sum.h:26</a></div></div> +<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdoc">Sum the all inputs (can choose the input signal). </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00033">Sum.h:33</a></div></div> <div class="ttc" id="class_element_html_a7dce6c1b97facecf3e3b2f1555858b09"><div class="ttname"><a href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">Element::GetParentList</a></div><div class="ttdeci">virtual std::vector< Element * > GetParentList() const</div><div class="ttdoc">Get the parent list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00506">Element.h:506</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. . </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00036">Gain.h:36</a></div></div> +<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00035">Gain.h:35</a></div></div> <div class="ttc" id="class_connection_line_html_a49300d04c6dd4bcc6f4569c0c47780c7"><div class="ttname"><a href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">ConnectionLine::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8cpp_source.html#l00158">ConnectionLine.cpp:158</a></div></div> <div class="ttc" id="class_element_html_aa79a7c1b219ce07f39ef3848e61c6eb0"><div class="ttname"><a href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">Element::GetChildList</a></div><div class="ttdeci">virtual std::vector< Element * > GetChildList() const</div><div class="ttdoc">Get the Child list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00511">Element.h:511</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> @@ -115,19 +115,21 @@ $(document).ready(function(){initNavTree('_control_editor_8cpp_source.html',''); <div class="ttc" id="class_element_html_a569178e9138490a981511a644536c0f9"><div class="ttname"><a href="class_element.html#a569178e9138490a981511a644536c0f9">Element::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00240">Element.h:240</a></div></div> <div class="ttc" id="class_element_html_a551ed1eeab446b5366d56c2ee9dec187"><div class="ttname"><a href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00302">Element.h:302</a></div></div> <div class="ttc" id="class_control_editor_base_html"><div class="ttname"><a href="class_control_editor_base.html">ControlEditorBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_editor_base_8h_source.html#l00047">ControlEditorBase.h:47</a></div></div> -<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00056">ElementPlotData.h:56</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. . </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00033">Exponential.h:33</a></div></div> +<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00064">ElementPlotData.h:64</a></div></div> +<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00032">Exponential.h:32</a></div></div> <div class="ttc" id="_gain_8h_html"><div class="ttname"><a href="_gain_8h.html">Gain.h</a></div></div> +<div class="ttc" id="_sum_8h_html"><div class="ttname"><a href="_sum_8h.html">Sum.h</a></div></div> <div class="ttc" id="class_element_html_afab568cea0a7074bb9984e94bd2ba52e"><div class="ttname"><a href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00307">Element.h:307</a></div></div> <div class="ttc" id="class_element_html_ac38d6707d08cb5c057032aa94b511a62"><div class="ttname"><a href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">Element::AddChild</a></div><div class="ttdeci">virtual void AddChild(Element *child)</div><div class="ttdoc">Add a child to the child list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00353">Element.cpp:353</a></div></div> <div class="ttc" id="_file_handing_8h_html"><div class="ttname"><a href="_file_handing_8h.html">FileHanding.h</a></div></div> <div class="ttc" id="class_chart_view_html"><div class="ttname"><a href="class_chart_view.html">ChartView</a></div><div class="ttdoc">This class is responsible to manage the charts generated in the transient electromechanical studies...</div><div class="ttdef"><b>Definition:</b> <a href="_chart_view_8h_source.html#l00040">ChartView.h:40</a></div></div> <div class="ttc" id="class_rate_limiter_html"><div class="ttname"><a href="class_rate_limiter.html">RateLimiter</a></div><div class="ttdoc">Limits the rising and/or falling rate. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00032">RateLimiter.h:32</a></div></div> <div class="ttc" id="class_element_html_ae1652eded3ccbd241a783691117418b2"><div class="ttname"><a href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00534">Element.h:534</a></div></div> +<div class="ttc" id="_element_plot_data_8h_html"><div class="ttname"><a href="_element_plot_data_8h.html">ElementPlotData.h</a></div></div> <div class="ttc" id="class_connection_line_html_a65c6d7139587c973a92dd1009909597f"><div class="ttname"><a href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f">ConnectionLine::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8cpp_source.html#l00053">ConnectionLine.cpp:53</a></div></div> <div class="ttc" id="class_connection_line_html"><div class="ttname"><a href="class_connection_line.html">ConnectionLine</a></div><div class="ttdoc">Connection between two control elements or other connection line and an element. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00030">ConnectionLine.h:30</a></div></div> <div class="ttc" id="_control_element_container_8h_html"><div class="ttname"><a href="_control_element_container_8h.html">ControlElementContainer.h</a></div></div> -<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00028">TransferFunction.h:28</a></div></div> +<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdoc">Calculates the time response by a frequency domain transfer function. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00035">TransferFunction.h:35</a></div></div> <div class="ttc" id="_constant_8h_html"><div class="ttname"><a href="_constant_8h.html">Constant.h</a></div></div> <div class="ttc" id="class_element_html_ac42604083db300d20c010b50084de91b"><div class="ttname"><a href="class_element.html#ac42604083db300d20c010b50084de91b">Element::IsSelected</a></div><div class="ttdeci">bool IsSelected() const</div><div class="ttdoc">Checks if the element is selected. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00202">Element.h:202</a></div></div> <div class="ttc" id="_exponential_8h_html"><div class="ttname"><a href="_exponential_8h.html">Exponential.h</a></div></div> @@ -140,6 +142,7 @@ $(document).ready(function(){initNavTree('_control_editor_8cpp_source.html',''); <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> <div class="ttc" id="class_connection_line_html_a292d284d6f30b209995c2a9877f9fe36"><div class="ttname"><a href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36">ConnectionLine::StartMove</a></div><div class="ttdeci">virtual void StartMove(wxPoint2DDouble position)</div><div class="ttdoc">Update the element attributes related to the movement. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8cpp_source.html#l00164">ConnectionLine.cpp:164</a></div></div> <div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdoc">A control element that provides a constant value. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00035">Constant.h:35</a></div></div> +<div class="ttc" id="_transfer_function_8h_html"><div class="ttname"><a href="_transfer_function_8h.html">TransferFunction.h</a></div></div> <div class="ttc" id="class_connection_line_html_aaa3e63c2e48338e324ee7b58911c86b6"><div class="ttname"><a href="class_connection_line.html#aaa3e63c2e48338e324ee7b58911c86b6">ConnectionLine::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8cpp_source.html#l00061">ConnectionLine.cpp:61</a></div></div> <div class="ttc" id="class_control_system_test_html"><div class="ttname"><a href="class_control_system_test.html">ControlSystemTest</a></div><div class="ttdoc">Form to edit properties to test the control system created. </div><div class="ttdef"><b>Definition:</b> <a href="_control_system_test_8h_source.html#l00032">ControlSystemTest.h:32</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_control_editor_8h_source.html b/docs/doxygen/html/_control_editor_8h_source.html index 02a1e13..f8bfc03 100644 --- a/docs/doxygen/html/_control_editor_8h_source.html +++ b/docs/doxygen/html/_control_editor_8h_source.html @@ -89,23 +89,23 @@ $(document).ready(function(){initNavTree('_control_editor_8h_source.html','');}) </div><!--header--> <div class="contents"> <a href="_control_editor_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef CONTROLEDITOR_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CONTROLEDITOR_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "ControlEditorBase.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <wx/wrapsizer.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/dcclient.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <wx/graphics.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <GL/gl.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <GL/glu.h></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <wx/progdlg.h></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="_i_o_control_8h.html">IOControl.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="_control_system_test_8h.html">ControlSystemTest.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span><a class="code" href="class_file_handing.html">FileHanding</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span><a class="code" href="class_camera.html">Camera</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span><a class="code" href="class_element.html">Element</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span><a class="code" href="class_control_element.html">ControlElement</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span><a class="code" href="class_transfer_function.html">TransferFunction</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span><a class="code" href="class_connection_line.html">ConnectionLine</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span><a class="code" href="class_sum.html">Sum</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span><a class="code" href="class_multiplier.html">Multiplier</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span><a class="code" href="class_limiter.html">Limiter</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">class </span><a class="code" href="class_rate_limiter.html">RateLimiter</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">class </span><a class="code" href="class_exponential.html">Exponential</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">class </span><a class="code" href="class_constant.html">Constant</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">class </span><a class="code" href="class_gain.html">Gain</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">class </span><a class="code" href="class_control_element_solver.html">ControlElementSolver</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">class </span><a class="code" href="class_control_element_container.html">ControlElementContainer</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">class </span><a class="code" href="class_chart_view.html">ChartView</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">class </span><a class="code" href="class_element_data_object.html">ElementDataObject</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">enum</span> ControlElementButtonID { ID_IO = 0, ID_TF, ID_SUM, ID_CONST, ID_LIMITER, ID_GAIN, ID_MULT, ID_EXP, ID_RATELIM };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="class_control_element_button.html"> 63</a></span> <span class="keyword">class </span><a class="code" href="class_control_element_button.html">ControlElementButton</a> : <span class="keyword">public</span> wxWindow</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="class_control_element_button.html">ControlElementButton</a>(wxWindow* parent, wxString label, wxImage image, wxWindowID <span class="keywordtype">id</span> = wxID_ANY);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  ~<a class="code" href="class_control_element_button.html">ControlElementButton</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPaint(wxPaintEvent& event);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMouseEnter(wxMouseEvent& event);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMouseLeave(wxMouseEvent& event);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftClickDown(wxMouseEvent& event);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftClickUp(wxMouseEvent& event);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  wxString m_label;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  wxFont m_font;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  wxPoint m_labelPosition;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  wxImage m_image;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  wxSize m_imageSize;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  wxPoint m_imagePosition;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">int</span> m_borderSize = 2;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">bool</span> m_mouseAbove = <span class="keyword">false</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">bool</span> m_selected = <span class="keyword">false</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  wxSize m_buttonSize;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> };</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="class_control_editor.html"> 91</a></span> <span class="keyword">class </span><a class="code" href="class_control_editor.html">ControlEditor</a> : <span class="keyword">public</span> <a class="code" href="class_control_editor_base.html">ControlEditorBase</a></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">enum</span> ControlEditorMode {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  MODE_EDIT = 0,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  MODE_MOVE_ELEMENT,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  MODE_MOVE_LINE,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  MODE_DRAG,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  MODE_DRAG_INSERT,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  MODE_INSERT,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  MODE_INSERT_LINE,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  MODE_SELECTION_RECT,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  MODE_PASTE,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  MODE_DRAG_PASTE</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  };</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="class_control_editor.html">ControlEditor</a>(wxWindow* parent,</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">int</span> ioflags = IOControl::IN_TERMINAL_VOLTAGE | IOControl::IN_VELOCITY | IOControl::OUT_FIELD_VOLTAGE |</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  IOControl::OUT_MEC_POWER);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_control_editor.html">ControlEditor</a>();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AddElement(ControlElementButtonID <span class="keywordtype">id</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Redraw() { m_glCanvas->Refresh(); }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RotateSelectedElements(<span class="keywordtype">bool</span> clockwise);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DeleteSelectedElements();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CheckConnections();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">virtual</span> std::vector<ConnectionLine*> GetConnectionLineList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_connectionList; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">virtual</span> std::vector<ControlElement*> GetControlElementList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementList; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElementsList(std::vector<ControlElement*> elementList) { m_elementList = elementList; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetConnectionsList(std::vector<ConnectionLine*> connectionList) { m_connectionList = connectionList; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetControlContainer(<a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlContainer) { m_ctrlContainer = ctrlContainer; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnClose(wxCloseEvent& event);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTestClick(wxCommandEvent& event);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonOKClick(wxCommandEvent& event) { Close(); }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnImportClick(wxCommandEvent& event);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnExportClick(wxCommandEvent& event);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnKeyDown(wxKeyEvent& event);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnIdle(wxIdleEvent& event);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnScroll(wxMouseEvent& event);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDoubleClick(wxMouseEvent& event);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftClickDown(wxMouseEvent& event);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftClickUp(wxMouseEvent& event);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMiddleDown(wxMouseEvent& event);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMiddleUp(wxMouseEvent& event);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMouseMotion(wxMouseEvent& event);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPaint(wxPaintEvent& event);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> LeftClickDown(wxMouseEvent& event);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">void</span> BuildControlElementPanel();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordtype">void</span> SetViewport();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">void</span> ConsolidateTexts();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">void</span> SetLastElementID();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  std::vector<ConnectionLine*>::iterator DeleteLineFromList(std::vector<ConnectionLine*>::iterator& it);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  wxGLContext* m_glContext = NULL;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="class_camera.html">Camera</a>* m_camera = NULL;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  ControlEditorMode m_mode = MODE_EDIT;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  wxRect2DDouble m_selectionRect;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  wxPoint2DDouble m_startSelRect;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  std::vector<ControlElement*> m_elementList;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  std::vector<ConnectionLine*> m_connectionList;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* m_ctrlContainer = NULL;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordtype">bool</span> m_firstDraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordtype">int</span> m_ioFlags;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordtype">int</span> m_lastElementID = 0;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">int</span> m_inputType = 0;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordtype">double</span> m_startTime = 1.0;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordtype">double</span> m_slope = 1.0;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordtype">double</span> m_timeStep = 1e-4;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordtype">double</span> m_simTime = 10.0;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> };</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">#endif // CONTROLEDITOR_H</span></div><div class="ttc" id="class_multiplier_html"><div class="ttname"><a href="class_multiplier.html">Multiplier</a></div><div class="ttdoc">Multiplies two inputs. </div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00032">Multiplier.h:32</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_control_element_solver_html"><div class="ttname"><a href="class_control_element_solver.html">ControlElementSolver</a></div><div class="ttdoc">Solves in the time the control system. Can solve the control system directly from a ControlEditor or ...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00045">ControlElementSolver.h:45</a></div></div> -<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00026">Sum.h:26</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. . </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00036">Gain.h:36</a></div></div> +<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdoc">Sum the all inputs (can choose the input signal). </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00033">Sum.h:33</a></div></div> +<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00035">Gain.h:35</a></div></div> <div class="ttc" id="_control_system_test_8h_html"><div class="ttname"><a href="_control_system_test_8h.html">ControlSystemTest.h</a></div></div> <div class="ttc" id="class_file_handing_html"><div class="ttname"><a href="class_file_handing.html">FileHanding</a></div><div class="ttdoc">Save and opens the projects created on disk. </div><div class="ttdef"><b>Definition:</b> <a href="_file_handing_8h_source.html#l00043">FileHanding.h:43</a></div></div> <div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdoc">Limits the input value by superior and inferior values. </div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00032">Limiter.h:32</a></div></div> <div class="ttc" id="class_camera_html"><div class="ttname"><a href="class_camera.html">Camera</a></div><div class="ttdoc">Class responsible for the correct visualization of the elements on screen. </div><div class="ttdef"><b>Definition:</b> <a href="_camera_8h_source.html#l00030">Camera.h:30</a></div></div> <div class="ttc" id="class_control_element_button_html"><div class="ttname"><a href="class_control_element_button.html">ControlElementButton</a></div><div class="ttdoc">This class is responsible to handle the user interaction with control elements. </div><div class="ttdef"><b>Definition:</b> <a href="_control_editor_8h_source.html#l00063">ControlEditor.h:63</a></div></div> <div class="ttc" id="class_control_editor_base_html"><div class="ttname"><a href="class_control_editor_base.html">ControlEditorBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_editor_base_8h_source.html#l00047">ControlEditorBase.h:47</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. . </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00033">Exponential.h:33</a></div></div> -<div class="ttc" id="class_element_data_object_html"><div class="ttname"><a href="class_element_data_object.html">ElementDataObject</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_data_object_8h_source.html#l00029">ElementDataObject.h:29</a></div></div> +<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00032">Exponential.h:32</a></div></div> +<div class="ttc" id="class_element_data_object_html"><div class="ttname"><a href="class_element_data_object.html">ElementDataObject</a></div><div class="ttdoc">Class to store the elements in the clipboard. </div><div class="ttdef"><b>Definition:</b> <a href="_element_data_object_8h_source.html#l00036">ElementDataObject.h:36</a></div></div> <div class="ttc" id="class_chart_view_html"><div class="ttname"><a href="class_chart_view.html">ChartView</a></div><div class="ttdoc">This class is responsible to manage the charts generated in the transient electromechanical studies...</div><div class="ttdef"><b>Definition:</b> <a href="_chart_view_8h_source.html#l00040">ChartView.h:40</a></div></div> <div class="ttc" id="class_rate_limiter_html"><div class="ttname"><a href="class_rate_limiter.html">RateLimiter</a></div><div class="ttdoc">Limits the rising and/or falling rate. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00032">RateLimiter.h:32</a></div></div> <div class="ttc" id="class_control_element_container_html"><div class="ttname"><a href="class_control_element_container.html">ControlElementContainer</a></div><div class="ttdoc">Class that can contain all control elements. Can identify (using RTTI) the elements from a generic li...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00045">ControlElementContainer.h:45</a></div></div> <div class="ttc" id="class_connection_line_html"><div class="ttname"><a href="class_connection_line.html">ConnectionLine</a></div><div class="ttdoc">Connection between two control elements or other connection line and an element. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00030">ConnectionLine.h:30</a></div></div> -<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00028">TransferFunction.h:28</a></div></div> +<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdoc">Calculates the time response by a frequency domain transfer function. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00035">TransferFunction.h:35</a></div></div> <div class="ttc" id="_i_o_control_8h_html"><div class="ttname"><a href="_i_o_control_8h.html">IOControl.h</a></div></div> <div class="ttc" id="class_control_editor_html"><div class="ttname"><a href="class_control_editor.html">ControlEditor</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_editor_8h_source.html#l00091">ControlEditor.h:91</a></div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> diff --git a/docs/doxygen/html/_control_element_8cpp_source.html b/docs/doxygen/html/_control_element_8cpp_source.html index abf4a3c..66bd3f0 100644 --- a/docs/doxygen/html/_control_element_8cpp_source.html +++ b/docs/doxygen/html/_control_element_8cpp_source.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('_control_element_8cpp_source.html','') <div class="title">ControlElement.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> Node::Node(wxPoint2DDouble position, NodeType nodeType, <span class="keywordtype">double</span> borderSize)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">double</span> totalRadius = m_radius + borderSize;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_rect = wxRect2DDouble(position.m_x - totalRadius, position.m_y - totalRadius, totalRadius * 2, totalRadius * 2);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_nodeType = nodeType;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_triPts.push_back(GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, m_radius));</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_triPts.push_back(GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, -m_radius));</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_triPts.push_back(GetPosition() + wxPoint2DDouble(-m_radius + 1, 0));</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> Node::~Node() {}</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keywordtype">void</span> Node::SetPosition(wxPoint2DDouble position)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_rect = wxRect2DDouble(position.m_x - m_rect.m_width / 2, position.m_y - m_rect.m_height / 2, m_rect.m_width,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_rect.m_height);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_triPts[0] = GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, m_radius);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_triPts[1] = GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, -m_radius);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_triPts[2] = GetPosition() + wxPoint2DDouble(-m_radius + 1, 0);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// Rotate according to the angle (node rect center as reference)</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span>(m_angle != 0.0) RotateTriPt(m_angle);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keywordtype">void</span> Node::StartMove(wxPoint2DDouble position)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_moveStartPt = position;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_movePos = m_rect.GetPosition() - wxPoint2DDouble(-m_rect.m_width / 2, -m_rect.m_height / 2);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keywordtype">void</span> Node::Move(wxPoint2DDouble position) { SetPosition(m_movePos + position - m_moveStartPt); }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> wxPoint2DDouble Node::GetPosition()<span class="keyword"> const</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword"></span>{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> m_rect.GetPosition() + wxPoint2DDouble(m_rect.GetSize().GetWidth() / 2, m_rect.GetSize().GetHeight() / 2);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keywordtype">void</span> Node::RotateTriPt(<span class="keywordtype">double</span> angle)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">double</span> radAngle = wxDegToRad(angle);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  wxPoint2DDouble rectCenter =</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_rect.GetPosition() + wxPoint2DDouble(m_rect.GetSize().GetWidth() / 2.0, m_rect.GetSize().GetHeight() / 2.0);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_triPts[0] = wxPoint2DDouble(std::cos(radAngle) * (m_triPts[0].m_x - rectCenter.m_x) -</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::sin(radAngle) * (m_triPts[0].m_y - rectCenter.m_y) + rectCenter.m_x,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  std::sin(radAngle) * (m_triPts[0].m_x - rectCenter.m_x) +</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  std::cos(radAngle) * (m_triPts[0].m_y - rectCenter.m_y) + rectCenter.m_y);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_triPts[1] = wxPoint2DDouble(std::cos(radAngle) * (m_triPts[1].m_x - rectCenter.m_x) -</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  std::sin(radAngle) * (m_triPts[1].m_y - rectCenter.m_y) + rectCenter.m_x,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  std::sin(radAngle) * (m_triPts[1].m_x - rectCenter.m_x) +</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  std::cos(radAngle) * (m_triPts[1].m_y - rectCenter.m_y) + rectCenter.m_y);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_triPts[2] = wxPoint2DDouble(std::cos(radAngle) * (m_triPts[2].m_x - rectCenter.m_x) -</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  std::sin(radAngle) * (m_triPts[2].m_y - rectCenter.m_y) + rectCenter.m_x,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  std::sin(radAngle) * (m_triPts[2].m_x - rectCenter.m_x) +</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::cos(radAngle) * (m_triPts[2].m_y - rectCenter.m_y) + rectCenter.m_y);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keywordtype">void</span> Node::Rotate(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_angle += 90.0;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_angle -= 90.0;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_angle = 0.0;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_angle = 270.0;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// Update input triangle points.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_triPts[0] = GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, m_radius);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_triPts[1] = GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, -m_radius);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_triPts[2] = GetPosition() + wxPoint2DDouble(-m_radius + 1, 0);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Rotate according to the angle (node rect center as reference)</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">if</span>(m_angle != 0.0) RotateTriPt(m_angle);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">bool</span> Node::Contains(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword"></span>{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span>(m_connected) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> m_rect.Contains(position);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> ControlElement::ControlElement(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_element.html">Element</a>() { m_elementID = id; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> ControlElement::~ControlElement() {}</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keywordtype">void</span> ControlElement::DrawNodes()<span class="keyword"> const</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="keyword"></span>{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  DrawCircle(node->GetPosition(), node->GetRadius(), 10, GL_POLYGON);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span>(node->GetNodeType() == Node::NODE_IN) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  DrawTriangle(node->GetInTrianglePts());</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec"> 117</a></span> <span class="keywordtype">void</span> <a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">ControlElement::StartMove</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_moveStartPt = position;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_movePos = m_position;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_nodeList.size(); ++i) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_nodeList[i]->StartMove(position);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708"> 126</a></span> <span class="keywordtype">void</span> <a class="code" href="class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708">ControlElement::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_nodeList.size(); ++i) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_nodeList[i]->Move(position);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keywordtype">bool</span> ControlElement::Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_output = input;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="keywordtype">void</span> ControlElement::ReplaceNode(<a class="code" href="class_node.html">Node</a>* oldNode, <a class="code" href="class_node.html">Node</a>* newNode)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_nodeList.size(); i++) {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>(m_nodeList[i] == oldNode) m_nodeList[i] = newNode;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> Node::Node(wxPoint2DDouble position, NodeType nodeType, <span class="keywordtype">double</span> borderSize)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">double</span> totalRadius = m_radius + borderSize;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_rect = wxRect2DDouble(position.m_x - totalRadius, position.m_y - totalRadius, totalRadius * 2, totalRadius * 2);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_nodeType = nodeType;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_triPts.push_back(GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, m_radius));</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_triPts.push_back(GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, -m_radius));</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_triPts.push_back(GetPosition() + wxPoint2DDouble(-m_radius + 1, 0));</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> Node::~Node() {}</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keywordtype">void</span> Node::SetPosition(wxPoint2DDouble position)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_rect = wxRect2DDouble(position.m_x - m_rect.m_width / 2, position.m_y - m_rect.m_height / 2, m_rect.m_width,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_rect.m_height);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_triPts[0] = GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, m_radius);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_triPts[1] = GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, -m_radius);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_triPts[2] = GetPosition() + wxPoint2DDouble(-m_radius + 1, 0);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="comment">// Rotate according to the angle (node rect center as reference)</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span>(m_angle != 0.0) RotateTriPt(m_angle);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keywordtype">void</span> Node::StartMove(wxPoint2DDouble position)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_moveStartPt = position;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_movePos = m_rect.GetPosition() - wxPoint2DDouble(-m_rect.m_width / 2, -m_rect.m_height / 2);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keywordtype">void</span> Node::Move(wxPoint2DDouble position) { SetPosition(m_movePos + position - m_moveStartPt); }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> wxPoint2DDouble Node::GetPosition()<span class="keyword"> const</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword"></span>{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> m_rect.GetPosition() + wxPoint2DDouble(m_rect.GetSize().GetWidth() / 2, m_rect.GetSize().GetHeight() / 2);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keywordtype">void</span> Node::RotateTriPt(<span class="keywordtype">double</span> angle)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">double</span> radAngle = wxDegToRad(angle);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  wxPoint2DDouble rectCenter =</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_rect.GetPosition() + wxPoint2DDouble(m_rect.GetSize().GetWidth() / 2.0, m_rect.GetSize().GetHeight() / 2.0);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_triPts[0] = wxPoint2DDouble(std::cos(radAngle) * (m_triPts[0].m_x - rectCenter.m_x) -</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::sin(radAngle) * (m_triPts[0].m_y - rectCenter.m_y) + rectCenter.m_x,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  std::sin(radAngle) * (m_triPts[0].m_x - rectCenter.m_x) +</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  std::cos(radAngle) * (m_triPts[0].m_y - rectCenter.m_y) + rectCenter.m_y);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_triPts[1] = wxPoint2DDouble(std::cos(radAngle) * (m_triPts[1].m_x - rectCenter.m_x) -</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  std::sin(radAngle) * (m_triPts[1].m_y - rectCenter.m_y) + rectCenter.m_x,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  std::sin(radAngle) * (m_triPts[1].m_x - rectCenter.m_x) +</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  std::cos(radAngle) * (m_triPts[1].m_y - rectCenter.m_y) + rectCenter.m_y);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_triPts[2] = wxPoint2DDouble(std::cos(radAngle) * (m_triPts[2].m_x - rectCenter.m_x) -</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  std::sin(radAngle) * (m_triPts[2].m_y - rectCenter.m_y) + rectCenter.m_x,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  std::sin(radAngle) * (m_triPts[2].m_x - rectCenter.m_x) +</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::cos(radAngle) * (m_triPts[2].m_y - rectCenter.m_y) + rectCenter.m_y);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keywordtype">void</span> Node::Rotate(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_angle += 90.0;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_angle -= 90.0;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_angle = 0.0;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_angle = 270.0;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// Update input triangle points.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_triPts[0] = GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, m_radius);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_triPts[1] = GetPosition() + wxPoint2DDouble(-m_radius - m_rect.GetSize().GetWidth() / 2, -m_radius);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_triPts[2] = GetPosition() + wxPoint2DDouble(-m_radius + 1, 0);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Rotate according to the angle (node rect center as reference)</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">if</span>(m_angle != 0.0) RotateTriPt(m_angle);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">bool</span> Node::Contains(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword"></span>{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span>(m_connected) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> m_rect.Contains(position);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> ControlElement::ControlElement(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_element.html">Element</a>() { m_elementID = id; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> ControlElement::~ControlElement() {}</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keywordtype">void</span> ControlElement::DrawNodes()<span class="keyword"> const</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="keyword"></span>{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  DrawCircle(node->GetPosition(), node->GetRadius(), 10, GL_POLYGON);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span>(node->GetNodeType() == Node::NODE_IN) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  DrawTriangle(node->GetInTrianglePts());</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec"> 117</a></span> <span class="keywordtype">void</span> <a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">ControlElement::StartMove</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_moveStartPt = position;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_movePos = m_position;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_nodeList.size(); ++i) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_nodeList[i]->StartMove(position);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708"> 126</a></span> <span class="keywordtype">void</span> <a class="code" href="class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708">ControlElement::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_nodeList.size(); ++i) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_nodeList[i]->Move(position);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="keywordtype">bool</span> ControlElement::Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_output = input;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="keywordtype">void</span> ControlElement::ReplaceNode(<a class="code" href="class_node.html">Node</a>* oldNode, <a class="code" href="class_node.html">Node</a>* newNode)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_nodeList.size(); i++) {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>(m_nodeList[i] == oldNode) m_nodeList[i] = newNode;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> <div class="ttc" id="class_control_element_html_a61440a392d438de163bfe9ffb8e9efec"><div class="ttname"><a href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">ControlElement::StartMove</a></div><div class="ttdeci">virtual void StartMove(wxPoint2DDouble position)</div><div class="ttdoc">Update the element attributes related to the movement. </div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8cpp_source.html#l00117">ControlElement.cpp:117</a></div></div> <div class="ttc" id="_control_element_8h_html"><div class="ttname"><a href="_control_element_8h.html">ControlElement.h</a></div><div class="ttdoc">Base class of a control element. Provide general methods to other control classes. </div></div> diff --git a/docs/doxygen/html/_control_element_8h_source.html b/docs/doxygen/html/_control_element_8h_source.html index 2222b15..4e1c5d9 100644 --- a/docs/doxygen/html/_control_element_8h_source.html +++ b/docs/doxygen/html/_control_element_8h_source.html @@ -88,9 +88,9 @@ $(document).ready(function(){initNavTree('_control_element_8h_source.html','');} <div class="title">ControlElement.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_control_element_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef CONTROLELEMENT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CONTROLELEMENT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="class_node.html"> 30</a></span> <span class="keyword">class </span><a class="code" href="class_node.html">Node</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">enum</span> NodeType { NODE_IN = 0, NODE_OUT };</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_node.html">Node</a>(wxPoint2DDouble position = wxPoint2DDouble(0, 0), NodeType nodeType = NODE_IN, <span class="keywordtype">double</span> borderSize = 0.0);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ~<a class="code" href="class_node.html">Node</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  wxRect2DDouble GetRect()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">void</span> SetRect(wxRect2DDouble rect) { m_rect = rect; }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  wxPoint2DDouble GetPosition() <span class="keyword">const</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">void</span> SetPosition(wxPoint2DDouble position);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  NodeType GetNodeType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_nodeType; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">void</span> SetNodeType(NodeType nodeType) { m_nodeType = nodeType; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> GetRadius()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_radius; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  std::vector<wxPoint2DDouble> GetInTrianglePts()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_triPts; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> GetAngle()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_angle; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">void</span> SetAngle(<span class="keywordtype">double</span> angle) { m_angle = angle; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">void</span> Rotate(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> RotateTriPt(<span class="keywordtype">double</span> angle);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">void</span> StartMove(wxPoint2DDouble position);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">void</span> Move(wxPoint2DDouble position);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">bool</span> IsConnected()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_connected; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">void</span> SetConnected(<span class="keywordtype">bool</span> connected = <span class="keyword">true</span>) { m_connected = connected; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">int</span> GetID()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_id; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">void</span> SetID(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) { m_id = id; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">int</span> m_id = -1;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  wxRect2DDouble m_rect;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  NodeType m_nodeType;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">bool</span> m_connected = <span class="keyword">false</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  wxPoint2DDouble m_moveStartPt;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  wxPoint2DDouble m_movePos;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">double</span> m_radius = 3.0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  std::vector<wxPoint2DDouble> m_triPts;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">double</span> m_angle = 0.0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> };</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="class_control_element.html"> 84</a></span> <span class="keyword">class </span><a class="code" href="class_control_element.html">ControlElement</a> : <span class="keyword">public</span> <a class="code" href="class_element.html">Element</a></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="class_control_element.html">ControlElement</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  ~<a class="code" href="class_control_element.html">ControlElement</a>();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> StartMove(wxPoint2DDouble position);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Move(wxPoint2DDouble position);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">void</span> SetNodeList(std::vector<Node*> nodeList) { m_nodeList = nodeList; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  std::vector<Node*> GetNodeList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_nodeList; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawNodes() <span class="keyword">const</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ReplaceNode(<a class="code" href="class_node.html">Node</a>* oldNode, <a class="code" href="class_node.html">Node</a>* newNode);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() {}</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsSolved()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_solved; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetSolved(<span class="keywordtype">bool</span> solved = <span class="keyword">true</span>) { m_solved = solved; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> GetOutput()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_output; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetOutput(<span class="keywordtype">double</span> output) { m_output = output; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  std::vector<Node*> m_nodeList;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">bool</span> m_solved = <span class="keyword">false</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">double</span> m_output = 0.0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> };</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#endif // CONTROLELEMENT_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_control_element_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef CONTROLELEMENT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CONTROLELEMENT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="class_node.html"> 30</a></span> <span class="keyword">class </span><a class="code" href="class_node.html">Node</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">enum</span> NodeType { NODE_IN = 0, NODE_OUT };</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_node.html">Node</a>(wxPoint2DDouble position = wxPoint2DDouble(0, 0), NodeType nodeType = NODE_IN, <span class="keywordtype">double</span> borderSize = 0.0);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ~<a class="code" href="class_node.html">Node</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  wxRect2DDouble GetRect()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">void</span> SetRect(wxRect2DDouble rect) { m_rect = rect; }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  wxPoint2DDouble GetPosition() <span class="keyword">const</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">void</span> SetPosition(wxPoint2DDouble position);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  NodeType GetNodeType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_nodeType; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">void</span> SetNodeType(NodeType nodeType) { m_nodeType = nodeType; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> GetRadius()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_radius; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  std::vector<wxPoint2DDouble> GetInTrianglePts()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_triPts; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> GetAngle()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_angle; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">void</span> SetAngle(<span class="keywordtype">double</span> angle) { m_angle = angle; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">void</span> Rotate(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> RotateTriPt(<span class="keywordtype">double</span> angle);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">void</span> StartMove(wxPoint2DDouble position);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">void</span> Move(wxPoint2DDouble position);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">bool</span> IsConnected()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_connected; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">void</span> SetConnected(<span class="keywordtype">bool</span> connected = <span class="keyword">true</span>) { m_connected = connected; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">int</span> GetID()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_id; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">void</span> SetID(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) { m_id = id; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">int</span> m_id = -1;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  wxRect2DDouble m_rect;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  NodeType m_nodeType;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">bool</span> m_connected = <span class="keyword">false</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  wxPoint2DDouble m_moveStartPt;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  wxPoint2DDouble m_movePos;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">double</span> m_radius = 3.0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  std::vector<wxPoint2DDouble> m_triPts;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">double</span> m_angle = 0.0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> };</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="class_control_element.html"> 84</a></span> <span class="keyword">class </span><a class="code" href="class_control_element.html">ControlElement</a> : <span class="keyword">public</span> <a class="code" href="class_element.html">Element</a></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="class_control_element.html">ControlElement</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  ~<a class="code" href="class_control_element.html">ControlElement</a>();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> StartMove(wxPoint2DDouble position);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Move(wxPoint2DDouble position);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">void</span> SetNodeList(std::vector<Node*> nodeList) { m_nodeList = nodeList; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  std::vector<Node*> GetNodeList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_nodeList; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawNodes() <span class="keyword">const</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ReplaceNode(<a class="code" href="class_node.html">Node</a>* oldNode, <a class="code" href="class_node.html">Node</a>* newNode);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() {}</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsSolved()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_solved; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetSolved(<span class="keywordtype">bool</span> solved = <span class="keyword">true</span>) { m_solved = solved; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> GetOutput()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_output; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetOutput(<span class="keywordtype">double</span> output) { m_output = output; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  std::vector<Node*> m_nodeList;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">bool</span> m_solved = <span class="keyword">false</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">double</span> m_output = 0.0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> };</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#endif // CONTROLELEMENT_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> -<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div><div class="ttdoc">Class to manage color of OpenGL. </div></div> +<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_control_element_container_8cpp_source.html b/docs/doxygen/html/_control_element_container_8cpp_source.html index eb02b94..1e4bdf8 100644 --- a/docs/doxygen/html/_control_element_container_8cpp_source.html +++ b/docs/doxygen/html/_control_element_container_8cpp_source.html @@ -89,20 +89,20 @@ $(document).ready(function(){initNavTree('_control_element_container_8cpp_source </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_control_element_container_8h.html">ControlElementContainer.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_control_editor_8h.html">ControlEditor.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> ControlElementContainer::ControlElementContainer() { ClearContainer(); }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> ControlElementContainer::~ControlElementContainer() {}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keywordtype">void</span> ControlElementContainer::FillContainer(<a class="code" href="class_control_editor.html">ControlEditor</a>* editor)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  ClearContainer();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_ctrlElementsList = editor->GetControlElementList();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_cLineList = editor->GetConnectionLineList();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">auto</span> cElementList = editor->GetControlElementList();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = cElementList.begin(), itEnd = cElementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">if</span>(<a class="code" href="class_constant.html">Constant</a>* constant = dynamic_cast<Constant*>(*it)) {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_constantList.push_back(constant);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_exponential.html">Exponential</a>* exponential = dynamic_cast<Exponential*>(*it)) {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_exponentialList.push_back(exponential);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_gain.html">Gain</a>* gain = dynamic_cast<Gain*>(*it)) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_gainList.push_back(gain);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_i_o_control.html">IOControl</a>* ioControl = dynamic_cast<IOControl*>(*it)) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_ioControlList.push_back(ioControl);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_limiter.html">Limiter</a>* limiter = dynamic_cast<Limiter*>(*it)) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_limiterList.push_back(limiter);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_multiplier.html">Multiplier</a>* multiplier = dynamic_cast<Multiplier*>(*it)) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_multiplierList.push_back(multiplier);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_rate_limiter.html">RateLimiter</a>* rateLimiter = dynamic_cast<RateLimiter*>(*it)) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_rateLimiterList.push_back(rateLimiter);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_sum.html">Sum</a>* sum = dynamic_cast<Sum*>(*it)) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_sumList.push_back(sum);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_transfer_function.html">TransferFunction</a>* tf = dynamic_cast<TransferFunction*>(*it)) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_tfList.push_back(tf);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keywordtype">void</span> ControlElementContainer::ClearContainer()</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_cLineList.clear();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_constantList.clear();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_exponentialList.clear();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_gainList.clear();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_ioControlList.clear();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_limiterList.clear();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_multiplierList.clear();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_rateLimiterList.clear();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_sumList.clear();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_tfList.clear();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="keywordtype">void</span> ControlElementContainer::FillContainer(std::vector<ControlElement*> controlElementList,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::vector<ConnectionLine*> connectionLineList)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  ClearContainer();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_ctrlElementsList = controlElementList;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_cLineList = connectionLineList;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = controlElementList.begin(), itEnd = controlElementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span>(<a class="code" href="class_constant.html">Constant</a>* constant = dynamic_cast<Constant*>(*it)) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_constantList.push_back(constant);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_exponential.html">Exponential</a>* exponential = dynamic_cast<Exponential*>(*it)) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_exponentialList.push_back(exponential);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_gain.html">Gain</a>* gain = dynamic_cast<Gain*>(*it)) {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_gainList.push_back(gain);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_i_o_control.html">IOControl</a>* ioControl = dynamic_cast<IOControl*>(*it)) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_ioControlList.push_back(ioControl);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_limiter.html">Limiter</a>* limiter = dynamic_cast<Limiter*>(*it)) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_limiterList.push_back(limiter);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_multiplier.html">Multiplier</a>* multiplier = dynamic_cast<Multiplier*>(*it)) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_multiplierList.push_back(multiplier);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_rate_limiter.html">RateLimiter</a>* rateLimiter = dynamic_cast<RateLimiter*>(*it)) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_rateLimiterList.push_back(rateLimiter);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_sum.html">Sum</a>* sum = dynamic_cast<Sum*>(*it)) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_sumList.push_back(sum);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_transfer_function.html">TransferFunction</a>* tf = dynamic_cast<TransferFunction*>(*it)) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_tfList.push_back(tf);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keywordtype">void</span> ControlElementContainer::GetContainerCopy(std::vector<ControlElement*>& controlElementList,</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  std::vector<ConnectionLine*>& connectionLineList)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  controlElementList.clear();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  connectionLineList.clear();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// Copy connection lines</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_cLineList.begin(), itEnd = m_cLineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* copy = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>((*it)->GetCopy());</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  connectionLineList.push_back(copy);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// Copy elements (exept connection line).</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordtype">int</span> nodeID = 0;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_ctrlElementsList.begin(), itEnd = m_ctrlElementsList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="class_element.html">Element</a>* oldElement = *it;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="class_control_element.html">ControlElement</a>* copy = <span class="keyword">static_cast<</span><a class="code" href="class_control_element.html">ControlElement</a>*<span class="keyword">></span>(oldElement-><a class="code" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">GetCopy</a>());</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  controlElementList.push_back(copy);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// Copy nodes.</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  std::vector<Node*> nodeList = copy->GetNodeList();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  std::vector<Node*> nodeListCopy;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = nodeList.begin(), itEndN = nodeList.end(); itN != itEndN; ++itN) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  node->SetID(nodeID);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="class_node.html">Node</a>* copyNode = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  *copyNode = *node;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  nodeListCopy.push_back(copyNode);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  nodeID++;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  copy->SetNodeList(nodeListCopy);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// Replace children to copies.</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">auto</span> childList = copy-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = childList.begin(), itEndC = childList.end(); itC != itEndC; ++itC) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// Replace child's parent to copy.</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itCL = connectionLineList.begin(), itEndCL = connectionLineList.end(); itCL != itEndCL; ++itCL) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* copyLine = *itCL;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span>(copyLine-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>() == child-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>()) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// Replace node.</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  nodeList = child->GetNodeList();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = nodeList.begin(), itEndN = nodeList.end(); itN != itEndN; ++itN) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itCN = nodeListCopy.begin(), itEndCN = nodeListCopy.end(); itCN != itEndCN; ++itCN) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="class_node.html">Node</a>* nodeCopy = *itCN;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span>(node->GetID() == nodeCopy->GetID()) {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  copyLine->ReplaceNode(node, nodeCopy);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  copyLine-><a class="code" href="class_element.html#a74ec9a279ac0127550e00941206dddb1">ReplaceParent</a>(oldElement, copy);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  copy-><a class="code" href="class_element.html#ad5f4bee2e241c430a643f46dadf3d3f5">ReplaceChild</a>(child, copyLine);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> }</div><div class="ttc" id="class_multiplier_html"><div class="ttname"><a href="class_multiplier.html">Multiplier</a></div><div class="ttdoc">Multiplies two inputs. </div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00032">Multiplier.h:32</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> -<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00026">Sum.h:26</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. . </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00036">Gain.h:36</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdoc">Sum the all inputs (can choose the input signal). </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00033">Sum.h:33</a></div></div> +<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00035">Gain.h:35</a></div></div> <div class="ttc" id="class_element_html_aa79a7c1b219ce07f39ef3848e61c6eb0"><div class="ttname"><a href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">Element::GetChildList</a></div><div class="ttdeci">virtual std::vector< Element * > GetChildList() const</div><div class="ttdoc">Get the Child list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00511">Element.h:511</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> <div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdoc">Limits the input value by superior and inferior values. </div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00032">Limiter.h:32</a></div></div> <div class="ttc" id="class_i_o_control_html"><div class="ttname"><a href="class_i_o_control.html">IOControl</a></div><div class="ttdoc">Provides the communication with the power element. </div><div class="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00035">IOControl.h:35</a></div></div> <div class="ttc" id="_control_editor_8h_html"><div class="ttname"><a href="_control_editor_8h.html">ControlEditor.h</a></div></div> <div class="ttc" id="class_element_html_ad5f4bee2e241c430a643f46dadf3d3f5"><div class="ttname"><a href="class_element.html#ad5f4bee2e241c430a643f46dadf3d3f5">Element::ReplaceChild</a></div><div class="ttdeci">virtual void ReplaceChild(Element *oldChild, Element *newChild)</div><div class="ttdoc">Replace a child from the list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00362">Element.cpp:362</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. . </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00033">Exponential.h:33</a></div></div> +<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00032">Exponential.h:32</a></div></div> <div class="ttc" id="class_rate_limiter_html"><div class="ttname"><a href="class_rate_limiter.html">RateLimiter</a></div><div class="ttdoc">Limits the rising and/or falling rate. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00032">RateLimiter.h:32</a></div></div> <div class="ttc" id="class_connection_line_html"><div class="ttname"><a href="class_connection_line.html">ConnectionLine</a></div><div class="ttdoc">Connection between two control elements or other connection line and an element. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00030">ConnectionLine.h:30</a></div></div> <div class="ttc" id="_control_element_container_8h_html"><div class="ttname"><a href="_control_element_container_8h.html">ControlElementContainer.h</a></div></div> -<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00028">TransferFunction.h:28</a></div></div> +<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdoc">Calculates the time response by a frequency domain transfer function. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00035">TransferFunction.h:35</a></div></div> <div class="ttc" id="class_control_editor_html"><div class="ttname"><a href="class_control_editor.html">ControlEditor</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_editor_8h_source.html#l00091">ControlEditor.h:91</a></div></div> <div class="ttc" id="_control_element_8h_html"><div class="ttname"><a href="_control_element_8h.html">ControlElement.h</a></div><div class="ttdoc">Base class of a control element. Provide general methods to other control classes. </div></div> <div class="ttc" id="class_element_html_a20693eda52fae0b42d6fa6a70fd0a0ee"><div class="ttname"><a href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">Element::GetID</a></div><div class="ttdeci">virtual int GetID() const</div><div class="ttdoc">Get the element ID. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00272">Element.h:272</a></div></div> diff --git a/docs/doxygen/html/_control_element_container_8h.html b/docs/doxygen/html/_control_element_container_8h.html index 57f5343..1b8b197 100644 --- a/docs/doxygen/html/_control_element_container_8h.html +++ b/docs/doxygen/html/_control_element_container_8h.html @@ -99,8 +99,8 @@ $(document).ready(function(){initNavTree('_control_element_container_8h.html','' <code>#include "<a class="el" href="_limiter_8h_source.html">Limiter.h</a>"</code><br /> <code>#include "<a class="el" href="_multiplier_8h_source.html">Multiplier.h</a>"</code><br /> <code>#include "<a class="el" href="_rate_limiter_8h_source.html">RateLimiter.h</a>"</code><br /> -<code>#include "Sum.h"</code><br /> -<code>#include "TransferFunction.h"</code><br /> +<code>#include "<a class="el" href="_sum_8h_source.html">Sum.h</a>"</code><br /> +<code>#include "<a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a>"</code><br /> </div> <p><a href="_control_element_container_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> diff --git a/docs/doxygen/html/_control_element_container_8h_source.html b/docs/doxygen/html/_control_element_container_8h_source.html index f0e83b3..c91c02d 100644 --- a/docs/doxygen/html/_control_element_container_8h_source.html +++ b/docs/doxygen/html/_control_element_container_8h_source.html @@ -88,9 +88,10 @@ $(document).ready(function(){initNavTree('_control_element_container_8h_source.h <div class="title">ControlElementContainer.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_control_element_container_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef CONTROLELEMENTCONTAINER_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CONTROLELEMENTCONTAINER_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_control_editor.html">ControlEditor</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span><a class="code" href="class_control_element.html">ControlElement</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="_connection_line_8h.html">ConnectionLine.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="_constant_8h.html">Constant.h</a>"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="_exponential_8h.html">Exponential.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="_gain_8h.html">Gain.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="_i_o_control_8h.html">IOControl.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="_limiter_8h.html">Limiter.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="_multiplier_8h.html">Multiplier.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="_rate_limiter_8h.html">RateLimiter.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "Sum.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "TransferFunction.h"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_control_element_container.html"> 45</a></span> <span class="keyword">class </span><a class="code" href="class_control_element_container.html">ControlElementContainer</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~<a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> FillContainer(<a class="code" href="class_control_editor.html">ControlEditor</a>* editor);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> FillContainer(std::vector<ControlElement*> controlElementList,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::vector<ConnectionLine*> connectionLineList);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> GetContainerCopy(std::vector<ControlElement*>& controlElementList,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  std::vector<ConnectionLine*>& connectionLineList);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ClearContainer();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::vector<ControlElement*> GetControlElementsList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_ctrlElementsList; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  std::vector<ConnectionLine*> GetConnectionLineList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_cLineList; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  std::vector<Constant*> GetConstantList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_constantList; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  std::vector<Exponential*> GetExponentialList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_exponentialList; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  std::vector<Gain*> GetGainList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_gainList; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  std::vector<IOControl*> GetIOControlList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_ioControlList; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  std::vector<Limiter*> GetLimiterList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_limiterList; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector<Multiplier*> GetMultiplierList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_multiplierList; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  std::vector<RateLimiter*> GetRateLimiterList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rateLimiterList; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  std::vector<Sum*> GetSumList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_sumList; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::vector<TransferFunction*> GetTFList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_tfList; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  std::vector<ControlElement*> m_ctrlElementsList;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  std::vector<Constant*> m_constantList;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  std::vector<ConnectionLine*> m_cLineList;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  std::vector<Exponential*> m_exponentialList;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::vector<Gain*> m_gainList;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  std::vector<IOControl*> m_ioControlList;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  std::vector<Limiter*> m_limiterList;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  std::vector<Multiplier*> m_multiplierList;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  std::vector<RateLimiter*> m_rateLimiterList;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  std::vector<Sum*> m_sumList;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::vector<TransferFunction*> m_tfList;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> };</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#endif // CONTROLELEMENTCONTAINER_H</span></div><div class="ttc" id="_multiplier_8h_html"><div class="ttname"><a href="_multiplier_8h.html">Multiplier.h</a></div></div> +<a href="_control_element_container_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef CONTROLELEMENTCONTAINER_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CONTROLELEMENTCONTAINER_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_control_editor.html">ControlEditor</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span><a class="code" href="class_control_element.html">ControlElement</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="_connection_line_8h.html">ConnectionLine.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="_constant_8h.html">Constant.h</a>"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="_exponential_8h.html">Exponential.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="_gain_8h.html">Gain.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="_i_o_control_8h.html">IOControl.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="_limiter_8h.html">Limiter.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="_multiplier_8h.html">Multiplier.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="_rate_limiter_8h.html">RateLimiter.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="_sum_8h.html">Sum.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="_transfer_function_8h.html">TransferFunction.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_control_element_container.html"> 45</a></span> <span class="keyword">class </span><a class="code" href="class_control_element_container.html">ControlElementContainer</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~<a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> FillContainer(<a class="code" href="class_control_editor.html">ControlEditor</a>* editor);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> FillContainer(std::vector<ControlElement*> controlElementList,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::vector<ConnectionLine*> connectionLineList);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> GetContainerCopy(std::vector<ControlElement*>& controlElementList,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  std::vector<ConnectionLine*>& connectionLineList);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ClearContainer();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::vector<ControlElement*> GetControlElementsList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_ctrlElementsList; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  std::vector<ConnectionLine*> GetConnectionLineList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_cLineList; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  std::vector<Constant*> GetConstantList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_constantList; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  std::vector<Exponential*> GetExponentialList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_exponentialList; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  std::vector<Gain*> GetGainList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_gainList; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  std::vector<IOControl*> GetIOControlList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_ioControlList; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  std::vector<Limiter*> GetLimiterList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_limiterList; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector<Multiplier*> GetMultiplierList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_multiplierList; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  std::vector<RateLimiter*> GetRateLimiterList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rateLimiterList; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  std::vector<Sum*> GetSumList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_sumList; }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::vector<TransferFunction*> GetTFList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_tfList; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  std::vector<ControlElement*> m_ctrlElementsList;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  std::vector<Constant*> m_constantList;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  std::vector<ConnectionLine*> m_cLineList;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  std::vector<Exponential*> m_exponentialList;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::vector<Gain*> m_gainList;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  std::vector<IOControl*> m_ioControlList;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  std::vector<Limiter*> m_limiterList;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  std::vector<Multiplier*> m_multiplierList;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  std::vector<RateLimiter*> m_rateLimiterList;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  std::vector<Sum*> m_sumList;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::vector<TransferFunction*> m_tfList;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> };</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#endif // CONTROLELEMENTCONTAINER_H</span></div><div class="ttc" id="_multiplier_8h_html"><div class="ttname"><a href="_multiplier_8h.html">Multiplier.h</a></div></div> <div class="ttc" id="_connection_line_8h_html"><div class="ttname"><a href="_connection_line_8h.html">ConnectionLine.h</a></div></div> <div class="ttc" id="_gain_8h_html"><div class="ttname"><a href="_gain_8h.html">Gain.h</a></div></div> +<div class="ttc" id="_sum_8h_html"><div class="ttname"><a href="_sum_8h.html">Sum.h</a></div></div> <div class="ttc" id="class_control_element_container_html"><div class="ttname"><a href="class_control_element_container.html">ControlElementContainer</a></div><div class="ttdoc">Class that can contain all control elements. Can identify (using RTTI) the elements from a generic li...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00045">ControlElementContainer.h:45</a></div></div> <div class="ttc" id="_constant_8h_html"><div class="ttname"><a href="_constant_8h.html">Constant.h</a></div></div> <div class="ttc" id="_i_o_control_8h_html"><div class="ttname"><a href="_i_o_control_8h.html">IOControl.h</a></div></div> @@ -99,6 +100,7 @@ $(document).ready(function(){initNavTree('_control_element_container_8h_source.h <div class="ttc" id="_rate_limiter_8h_html"><div class="ttname"><a href="_rate_limiter_8h.html">RateLimiter.h</a></div></div> <div class="ttc" id="_limiter_8h_html"><div class="ttname"><a href="_limiter_8h.html">Limiter.h</a></div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> +<div class="ttc" id="_transfer_function_8h_html"><div class="ttname"><a href="_transfer_function_8h.html">TransferFunction.h</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_control_element_solver_8cpp_source.html b/docs/doxygen/html/_control_element_solver_8cpp_source.html index 7449d9b..a103734 100644 --- a/docs/doxygen/html/_control_element_solver_8cpp_source.html +++ b/docs/doxygen/html/_control_element_solver_8cpp_source.html @@ -88,18 +88,20 @@ $(document).ready(function(){initNavTree('_control_element_solver_8cpp_source.ht <div class="title">ControlElementSolver.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_control_element_solver_8h.html">ControlElementSolver.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_control_element_container_8h.html">ControlElementContainer.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_editor_8h.html">ControlEditor.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_connection_line_8h.html">ConnectionLine.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="_constant_8h.html">Constant.h</a>"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="_exponential_8h.html">Exponential.h</a>"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="_gain_8h.html">Gain.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="_i_o_control_8h.html">IOControl.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="_limiter_8h.html">Limiter.h</a>"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="_multiplier_8h.html">Multiplier.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="_rate_limiter_8h.html">RateLimiter.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Sum.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "TransferFunction.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> ControlElementSolver::ControlElementSolver(<a class="code" href="class_control_editor.html">ControlEditor</a>* controlEditor,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">double</span> timeStep,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> integrationError,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">bool</span> startAllZero,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> input)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_ctrlContainer = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_ctrlContainer->FillContainer(controlEditor);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Initialize(controlEditor, timeStep, integrationError, startAllZero, input);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> ControlElementSolver::ControlElementSolver(<a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlContainer,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> timeStep,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">double</span> integrationError,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">bool</span> startAllZero,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> input,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  wxWindow* parent)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_ctrlContainer = ctrlContainer;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  Initialize(parent, timeStep, integrationError, startAllZero, input);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keywordtype">void</span> ControlElementSolver::Initialize(wxWindow* parent,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">double</span> timeStep,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">double</span> integrationError,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">bool</span> startAllZero,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">double</span> input)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// Check if the sistem have one input and one output</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> fail = <span class="keyword">false</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  wxString failMessage = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">auto</span> ioList = m_ctrlContainer->GetIOControlList();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span>(ioList.size() != 2) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  failMessage = _(<span class="stringliteral">"The control system must have one input and one output."</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">bool</span> haveInput, haveOutput;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  haveInput = haveOutput = <span class="keyword">false</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = ioList.begin(), itEnd = ioList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* io = *it;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(io->GetType() == Node::NODE_OUT) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_inputControl = io;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  haveInput = <span class="keyword">true</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(io->GetType() == Node::NODE_IN) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_outputControl = io;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  haveOutput = <span class="keyword">true</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span>(!fail && !haveInput) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  failMessage = _(<span class="stringliteral">"There is no input in the control system."</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(!fail && !haveOutput) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  failMessage = _(<span class="stringliteral">"There is no output in the control system."</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>(!fail) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span>(m_inputControl-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>().size() == 0) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  failMessage = _(<span class="stringliteral">"Input not connected."</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_timeStep = timeStep;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_integrationError = integrationError;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(!fail) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span>(!InitializeValues(input, startAllZero)) {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  failMessage = _(<span class="stringliteral">"It was not possible to initialize the control system."</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>(fail) {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  wxMessageDialog msgDialog(parent, failMessage, _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_isOK = <span class="keyword">true</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keywordtype">bool</span> ControlElementSolver::InitializeValues(<span class="keywordtype">double</span> input, <span class="keywordtype">bool</span> startAllZero)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// Reset Elements values</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">auto</span> elementList = m_ctrlContainer->GetControlElementsList();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  element->SetSolved(<span class="keyword">false</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  element->SetOutput(0.0);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">auto</span> tfList = m_ctrlContainer->GetTFList();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = tfList.begin(), itEnd = tfList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* tf = *it;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  tf->CalculateSpaceState(100, m_integrationError);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">auto</span> connectionLineList = m_ctrlContainer->GetConnectionLineList();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = connectionLineList.begin(), itEnd = connectionLineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  cLine->SetSolved(<span class="keyword">false</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  cLine->SetValue(0.0);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span>(!startAllZero) {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">double</span> origTimeStep = m_timeStep;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">double</span> minStep = m_timeStep / 10;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">double</span> maxStep = m_timeStep * 10;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// Calculate the steady-state results according to the input.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordtype">double</span> minError = 1e-7 * m_timeStep;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">int</span> maxIteration = 100 / m_timeStep;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">double</span> prevSol = 0.0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">double</span> currentSol = 1.0;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordtype">double</span> error = 1.0;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">double</span> prevError = 1.0;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordtype">int</span> numIt = 0;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">while</span>(error > minError) {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  prevSol = currentSol;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  prevError = error;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  SolveNextStep(input);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  currentSol = GetLastSolution();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  numIt++;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  error = std::abs(prevSol - currentSol);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span>(std::abs(error - prevError) < 1e-1) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span>(m_timeStep < maxStep) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_timeStep *= 1.5;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(std::abs(error - prevError) > 10) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">if</span>(m_timeStep > minStep) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  m_timeStep /= 1.5;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span>(numIt >= maxIteration) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_timeStep = origTimeStep;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_solutions.clear();</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="keywordtype">void</span> ControlElementSolver::SolveNextStep(<span class="keywordtype">double</span> input)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// Set all elements as not solved</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keyword">auto</span> elementList = m_ctrlContainer->GetControlElementsList();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  element->SetSolved(<span class="keyword">false</span>);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">auto</span> connectionLineList = m_ctrlContainer->GetConnectionLineList();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = connectionLineList.begin(), itEnd = connectionLineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  cLine->SetSolved(<span class="keyword">false</span>);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">// Get first node and set input value on connected lines</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* firstConn = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(m_inputControl-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>()[0]);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  m_inputControl->SetSolved();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  firstConn->SetValue(input);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  firstConn->SetSolved();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  FillAllConnectedChildren(firstConn);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="comment">// Set value to the connected lines in constants</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">auto</span> constantList = m_ctrlContainer->GetConstantList();</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = constantList.begin(), itEnd = constantList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="class_constant.html">Constant</a>* constant = *it;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>(constant-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>().size() == 1) {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  constant->SetSolved();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(constant-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>()[0]);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  child->SetValue(constant->GetValue());</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  child->SetSolved();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  FillAllConnectedChildren(child);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* currentLine = firstConn;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">while</span>(currentLine) {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  currentLine = SolveNextElement(currentLine);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordtype">bool</span> haveUnsolvedElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">while</span>(haveUnsolvedElement) {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  haveUnsolvedElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// Get the solved line connected with unsolved element (elements not connected in the main branch).</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = connectionLineList.begin(), itEnd = connectionLineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">if</span>(cLine->IsSolved()) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">auto</span> parentList = cLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itP = parentList.begin(), itPEnd = parentList.end(); itP != itPEnd; ++itP) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="class_control_element.html">ControlElement</a>* parent = <span class="keyword">static_cast<</span><a class="code" href="class_control_element.html">ControlElement</a>*<span class="keyword">></span>(*itP);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">if</span>(!parent->IsSolved()) {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  haveUnsolvedElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// Solve secondary branch.</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  currentLine = cLine;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">while</span>(currentLine) {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  currentLine = SolveNextElement(currentLine);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(haveUnsolvedElement) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// Set the control system step output.</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span>(m_outputControl-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>().size() == 1) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(m_outputControl-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>()[0]);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_solutions.push_back(cLine->GetValue());</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_solutions.push_back(0.0);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="keywordtype">void</span> ControlElementSolver::FillAllConnectedChildren(<a class="code" href="class_connection_line.html">ConnectionLine</a>* parent)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keyword">auto</span> childList = parent->GetLineChildList();</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = childList.begin(), itEnd = childList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = *it;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  child->SetValue(parent->GetValue());</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  child->SetSolved();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  FillAllConnectedChildren(child);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <a class="code" href="class_connection_line.html">ConnectionLine</a>* ControlElementSolver::SolveNextElement(<a class="code" href="class_connection_line.html">ConnectionLine</a>* currentLine)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keyword">auto</span> parentList = currentLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = parentList.begin(), itEnd = parentList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = <span class="keyword">static_cast<</span><a class="code" href="class_control_element.html">ControlElement</a>*<span class="keyword">></span>(*it);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="comment">// Solve the unsolved parent.</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span>(!element->IsSolved()) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span>(!element->Solve(currentLine->GetValue(), m_timeStep)) <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  element->SetSolved();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="comment">// Get the output node (must have one or will result NULL).</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="class_node.html">Node</a>* outNode = NULL;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keyword">auto</span> nodeList = element->GetNodeList();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = nodeList.begin(), itNEnd = nodeList.end(); itN != itNEnd; ++itN) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">if</span>(node->GetNodeType() == Node::NODE_OUT) outNode = node;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">if</span>(!outNode) <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// Set connection line value associated with the output node.</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = childList.begin(), itCEnd = childList.end(); itC != itCEnd; ++itC) {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">if</span>(!cLine->IsSolved()) { <span class="comment">// Only check unsolved lines</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// Check if the connection line have the output node on the list</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keyword">auto</span> lineNodeList = cLine->GetNodeList();</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itCN = nodeList.begin(), itCNEnd = nodeList.end(); itCN != itCNEnd; ++itCN) {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="class_node.html">Node</a>* childNode = *itCN;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span>(childNode == outNode) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// Check if the line connect two elements, otherwise return NULL</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">if</span>(cLine->GetType() != ConnectionLine::ELEMENT_ELEMENT) <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">// Set the connection line value and return it.</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  cLine->SetValue(element->GetOutput());</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  cLine->SetSolved();</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  FillAllConnectedChildren(cLine);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">return</span> cLine;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> }</div><div class="ttc" id="class_element_html_a7dce6c1b97facecf3e3b2f1555858b09"><div class="ttname"><a href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">Element::GetParentList</a></div><div class="ttdeci">virtual std::vector< Element * > GetParentList() const</div><div class="ttdoc">Get the parent list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00506">Element.h:506</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_control_element_solver_8h.html">ControlElementSolver.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_control_element_container_8h.html">ControlElementContainer.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_editor_8h.html">ControlEditor.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_connection_line_8h.html">ConnectionLine.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="_constant_8h.html">Constant.h</a>"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="_exponential_8h.html">Exponential.h</a>"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="_gain_8h.html">Gain.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="_i_o_control_8h.html">IOControl.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="_limiter_8h.html">Limiter.h</a>"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="_multiplier_8h.html">Multiplier.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="_rate_limiter_8h.html">RateLimiter.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="_sum_8h.html">Sum.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="_transfer_function_8h.html">TransferFunction.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> ControlElementSolver::ControlElementSolver(<a class="code" href="class_control_editor.html">ControlEditor</a>* controlEditor,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">double</span> timeStep,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> integrationError,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">bool</span> startAllZero,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> input)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_ctrlContainer = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_ctrlContainer->FillContainer(controlEditor);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  Initialize(controlEditor, timeStep, integrationError, startAllZero, input);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> ControlElementSolver::ControlElementSolver(<a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlContainer,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> timeStep,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">double</span> integrationError,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">bool</span> startAllZero,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> input,</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  wxWindow* parent)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_ctrlContainer = ctrlContainer;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  Initialize(parent, timeStep, integrationError, startAllZero, input);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keywordtype">void</span> ControlElementSolver::Initialize(wxWindow* parent,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">double</span> timeStep,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">double</span> integrationError,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">bool</span> startAllZero,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">double</span> input)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// Check if the sistem have one input and one output</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> fail = <span class="keyword">false</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  wxString failMessage = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">auto</span> ioList = m_ctrlContainer->GetIOControlList();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span>(ioList.size() != 2) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  failMessage = _(<span class="stringliteral">"The control system must have one input and one output."</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">bool</span> haveInput, haveOutput;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  haveInput = haveOutput = <span class="keyword">false</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = ioList.begin(), itEnd = ioList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* io = *it;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(io->GetType() == Node::NODE_OUT) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_inputControl = io;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  haveInput = <span class="keyword">true</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(io->GetType() == Node::NODE_IN) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_outputControl = io;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  haveOutput = <span class="keyword">true</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span>(!fail && !haveInput) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  failMessage = _(<span class="stringliteral">"There is no input in the control system."</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(!fail && !haveOutput) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  failMessage = _(<span class="stringliteral">"There is no output in the control system."</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>(!fail) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span>(m_inputControl-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>().size() == 0) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  failMessage = _(<span class="stringliteral">"Input not connected."</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_timeStep = timeStep;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_integrationError = integrationError;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(!fail) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span>(!InitializeValues(input, startAllZero)) {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  fail = <span class="keyword">true</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  failMessage = _(<span class="stringliteral">"It was not possible to initialize the control system."</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>(fail) {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  wxMessageDialog msgDialog(parent, failMessage, _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_isOK = <span class="keyword">true</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keywordtype">bool</span> ControlElementSolver::InitializeValues(<span class="keywordtype">double</span> input, <span class="keywordtype">bool</span> startAllZero)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// Reset Elements values</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">auto</span> elementList = m_ctrlContainer->GetControlElementsList();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  element->SetSolved(<span class="keyword">false</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  element->SetOutput(0.0);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">auto</span> tfList = m_ctrlContainer->GetTFList();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = tfList.begin(), itEnd = tfList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* tf = *it;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  tf-><a class="code" href="class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a">CalculateSpaceState</a>(100, m_integrationError);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">auto</span> connectionLineList = m_ctrlContainer->GetConnectionLineList();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = connectionLineList.begin(), itEnd = connectionLineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  cLine->SetSolved(<span class="keyword">false</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  cLine->SetValue(0.0);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span>(!startAllZero) {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">double</span> origTimeStep = m_timeStep;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">double</span> minStep = m_timeStep / 10;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordtype">double</span> maxStep = m_timeStep * 10;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// Calculate the steady-state results according to the input.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordtype">double</span> minError = 1e-7 * m_timeStep;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">int</span> maxIteration = 100 / m_timeStep;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">double</span> prevSol = 0.0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">double</span> currentSol = 1.0;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordtype">double</span> error = 1.0;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">double</span> prevError = 1.0;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordtype">int</span> numIt = 0;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">while</span>(error > minError) {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  prevSol = currentSol;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  prevError = error;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  SolveNextStep(input);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  currentSol = GetLastSolution();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  numIt++;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  error = std::abs(prevSol - currentSol);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span>(std::abs(error - prevError) < 1e-1) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span>(m_timeStep < maxStep) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_timeStep *= 1.5;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(std::abs(error - prevError) > 10) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">if</span>(m_timeStep > minStep) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  m_timeStep /= 1.5;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span>(numIt >= maxIteration) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_timeStep = origTimeStep;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_solutions.clear();</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="keywordtype">void</span> ControlElementSolver::SolveNextStep(<span class="keywordtype">double</span> input)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// Set all elements as not solved</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keyword">auto</span> elementList = m_ctrlContainer->GetControlElementsList();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  element->SetSolved(<span class="keyword">false</span>);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keyword">auto</span> connectionLineList = m_ctrlContainer->GetConnectionLineList();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = connectionLineList.begin(), itEnd = connectionLineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  cLine->SetSolved(<span class="keyword">false</span>);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">// Get first node and set input value on connected lines</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* firstConn = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(m_inputControl-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>()[0]);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  m_inputControl->SetSolved();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  firstConn->SetValue(input);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  firstConn->SetSolved();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  FillAllConnectedChildren(firstConn);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="comment">// Set value to the connected lines in constants</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">auto</span> constantList = m_ctrlContainer->GetConstantList();</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = constantList.begin(), itEnd = constantList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="class_constant.html">Constant</a>* constant = *it;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>(constant-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>().size() == 1) {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  constant->SetSolved();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(constant-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>()[0]);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  child->SetValue(constant->GetValue());</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  child->SetSolved();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  FillAllConnectedChildren(child);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* currentLine = firstConn;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">while</span>(currentLine) {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  currentLine = SolveNextElement(currentLine);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordtype">bool</span> haveUnsolvedElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">while</span>(haveUnsolvedElement) {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  haveUnsolvedElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// Get the solved line connected with unsolved element (elements not connected in the main branch).</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = connectionLineList.begin(), itEnd = connectionLineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">if</span>(cLine->IsSolved()) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">auto</span> parentList = cLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itP = parentList.begin(), itPEnd = parentList.end(); itP != itPEnd; ++itP) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="class_control_element.html">ControlElement</a>* parent = <span class="keyword">static_cast<</span><a class="code" href="class_control_element.html">ControlElement</a>*<span class="keyword">></span>(*itP);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">if</span>(!parent->IsSolved()) {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  haveUnsolvedElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// Solve secondary branch.</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  currentLine = cLine;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">while</span>(currentLine) {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  currentLine = SolveNextElement(currentLine);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(haveUnsolvedElement) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// Set the control system step output.</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span>(m_outputControl-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>().size() == 1) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(m_outputControl-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>()[0]);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_solutions.push_back(cLine->GetValue());</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_solutions.push_back(0.0);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="keywordtype">void</span> ControlElementSolver::FillAllConnectedChildren(<a class="code" href="class_connection_line.html">ConnectionLine</a>* parent)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keyword">auto</span> childList = parent->GetLineChildList();</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = childList.begin(), itEnd = childList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* child = *it;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  child->SetValue(parent->GetValue());</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  child->SetSolved();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  FillAllConnectedChildren(child);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <a class="code" href="class_connection_line.html">ConnectionLine</a>* ControlElementSolver::SolveNextElement(<a class="code" href="class_connection_line.html">ConnectionLine</a>* currentLine)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keyword">auto</span> parentList = currentLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = parentList.begin(), itEnd = parentList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = <span class="keyword">static_cast<</span><a class="code" href="class_control_element.html">ControlElement</a>*<span class="keyword">></span>(*it);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="comment">// Solve the unsolved parent.</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span>(!element->IsSolved()) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span>(!element->Solve(currentLine->GetValue(), m_timeStep)) <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  element->SetSolved();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="comment">// Get the output node (must have one or will result NULL).</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <a class="code" href="class_node.html">Node</a>* outNode = NULL;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keyword">auto</span> nodeList = element->GetNodeList();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = nodeList.begin(), itNEnd = nodeList.end(); itN != itNEnd; ++itN) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">if</span>(node->GetNodeType() == Node::NODE_OUT) outNode = node;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">if</span>(!outNode) <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// Set connection line value associated with the output node.</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keyword">auto</span> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = childList.begin(), itCEnd = childList.end(); itC != itCEnd; ++itC) {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">if</span>(!cLine->IsSolved()) { <span class="comment">// Only check unsolved lines</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// Check if the connection line have the output node on the list</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keyword">auto</span> lineNodeList = cLine->GetNodeList();</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itCN = nodeList.begin(), itCNEnd = nodeList.end(); itCN != itCNEnd; ++itCN) {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="class_node.html">Node</a>* childNode = *itCN;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span>(childNode == outNode) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// Check if the line connect two elements, otherwise return NULL</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">if</span>(cLine->GetType() != ConnectionLine::ELEMENT_ELEMENT) <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">// Set the connection line value and return it.</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  cLine->SetValue(element->GetOutput());</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  cLine->SetSolved();</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  FillAllConnectedChildren(cLine);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">return</span> cLine;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> }</div><div class="ttc" id="class_element_html_a7dce6c1b97facecf3e3b2f1555858b09"><div class="ttname"><a href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">Element::GetParentList</a></div><div class="ttdeci">virtual std::vector< Element * > GetParentList() const</div><div class="ttdoc">Get the parent list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00506">Element.h:506</a></div></div> <div class="ttc" id="class_element_html_aa79a7c1b219ce07f39ef3848e61c6eb0"><div class="ttname"><a href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">Element::GetChildList</a></div><div class="ttdeci">virtual std::vector< Element * > GetChildList() const</div><div class="ttdoc">Get the Child list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00511">Element.h:511</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> <div class="ttc" id="_multiplier_8h_html"><div class="ttname"><a href="_multiplier_8h.html">Multiplier.h</a></div></div> +<div class="ttc" id="class_transfer_function_html_a5f09dd8e5c016a90c69a8e38ef302c8a"><div class="ttname"><a href="class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a">TransferFunction::CalculateSpaceState</a></div><div class="ttdeci">virtual void CalculateSpaceState(int maxIteration=100, double error=1e-3)</div><div class="ttdoc">Convert the transfer function to space state on controllable canonical form (CCF). </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00268">TransferFunction.cpp:268</a></div></div> <div class="ttc" id="class_i_o_control_html"><div class="ttname"><a href="class_i_o_control.html">IOControl</a></div><div class="ttdoc">Provides the communication with the power element. </div><div class="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00035">IOControl.h:35</a></div></div> <div class="ttc" id="_connection_line_8h_html"><div class="ttname"><a href="_connection_line_8h.html">ConnectionLine.h</a></div></div> <div class="ttc" id="_control_editor_8h_html"><div class="ttname"><a href="_control_editor_8h.html">ControlEditor.h</a></div></div> <div class="ttc" id="_gain_8h_html"><div class="ttname"><a href="_gain_8h.html">Gain.h</a></div></div> +<div class="ttc" id="_sum_8h_html"><div class="ttname"><a href="_sum_8h.html">Sum.h</a></div></div> <div class="ttc" id="class_control_element_container_html"><div class="ttname"><a href="class_control_element_container.html">ControlElementContainer</a></div><div class="ttdoc">Class that can contain all control elements. Can identify (using RTTI) the elements from a generic li...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00045">ControlElementContainer.h:45</a></div></div> <div class="ttc" id="class_connection_line_html"><div class="ttname"><a href="class_connection_line.html">ConnectionLine</a></div><div class="ttdoc">Connection between two control elements or other connection line and an element. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00030">ConnectionLine.h:30</a></div></div> <div class="ttc" id="_control_element_container_8h_html"><div class="ttname"><a href="_control_element_container_8h.html">ControlElementContainer.h</a></div></div> -<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00028">TransferFunction.h:28</a></div></div> +<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdoc">Calculates the time response by a frequency domain transfer function. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00035">TransferFunction.h:35</a></div></div> <div class="ttc" id="_constant_8h_html"><div class="ttname"><a href="_constant_8h.html">Constant.h</a></div></div> <div class="ttc" id="_i_o_control_8h_html"><div class="ttname"><a href="_i_o_control_8h.html">IOControl.h</a></div></div> <div class="ttc" id="class_control_editor_html"><div class="ttname"><a href="class_control_editor.html">ControlEditor</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_editor_8h_source.html#l00091">ControlEditor.h:91</a></div></div> @@ -109,6 +111,7 @@ $(document).ready(function(){initNavTree('_control_element_solver_8cpp_source.ht <div class="ttc" id="_limiter_8h_html"><div class="ttname"><a href="_limiter_8h.html">Limiter.h</a></div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> <div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdoc">A control element that provides a constant value. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00035">Constant.h:35</a></div></div> +<div class="ttc" id="_transfer_function_8h_html"><div class="ttname"><a href="_transfer_function_8h.html">TransferFunction.h</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_control_element_solver_8h_source.html b/docs/doxygen/html/_control_element_solver_8h_source.html index 5fb831f..1f88c74 100644 --- a/docs/doxygen/html/_control_element_solver_8h_source.html +++ b/docs/doxygen/html/_control_element_solver_8h_source.html @@ -90,15 +90,15 @@ $(document).ready(function(){initNavTree('_control_element_solver_8h_source.html <div class="contents"> <a href="_control_element_solver_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef CONTROLELEMENTSOLVER_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define CONTROLELEMENTSOLVER_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <wx/window.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span><a class="code" href="class_control_element_container.html">ControlElementContainer</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">class </span><a class="code" href="class_control_editor.html">ControlEditor</a>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_connection_line.html">ConnectionLine</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">class </span><a class="code" href="class_constant.html">Constant</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">class </span><a class="code" href="class_exponential.html">Exponential</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">class </span><a class="code" href="class_gain.html">Gain</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">class </span><a class="code" href="class_i_o_control.html">IOControl</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span><a class="code" href="class_limiter.html">Limiter</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span><a class="code" href="class_multiplier.html">Multiplier</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">class </span><a class="code" href="class_rate_limiter.html">RateLimiter</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span><a class="code" href="class_sum.html">Sum</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span><a class="code" href="class_transfer_function.html">TransferFunction</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_control_element_solver.html"> 45</a></span> <span class="keyword">class </span><a class="code" href="class_control_element_solver.html">ControlElementSolver</a></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>() {}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>(<a class="code" href="class_control_editor.html">ControlEditor</a>* controlEditor,</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> timeStep = 1e-3,</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">double</span> integrationError = 1e-3,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">bool</span> startAllZero = <span class="keyword">true</span>,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">double</span> input = 0.0);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>(<a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlContainer,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> timeStep = 1e-3,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">double</span> integrationError = 1e-3,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">bool</span> startAllZero = <span class="keyword">true</span>,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">double</span> input = 0.0,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  wxWindow* parent = NULL);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_control_element_solver.html">ControlElementSolver</a>() {}</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> InitializeValues(<span class="keywordtype">double</span> input, <span class="keywordtype">bool</span> startAllZero);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SolveNextStep(<span class="keywordtype">double</span> input);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> std::vector<double> GetSolutions() { <span class="keywordflow">return</span> m_solutions; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> GetLastSolution() { <span class="keywordflow">return</span> m_solutions[m_solutions.size() - 1]; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsOK()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_isOK; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">void</span> Initialize(wxWindow* parent, <span class="keywordtype">double</span> timeStep, <span class="keywordtype">double</span> integrationError, <span class="keywordtype">bool</span> startAllZero, <span class="keywordtype">double</span> input);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">void</span> FillAllConnectedChildren(<a class="code" href="class_connection_line.html">ConnectionLine</a>* parent);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* SolveNextElement(<a class="code" href="class_connection_line.html">ConnectionLine</a>* currentLine);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* m_ctrlContainer = NULL;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">double</span> m_timeStep;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">double</span> m_integrationError;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  std::vector<double> m_solutions;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">bool</span> m_isOK = <span class="keyword">false</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* m_inputControl = NULL;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* m_outputControl = NULL;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> };</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#endif // CONTROLELEMENTSOLVER_H</span></div><div class="ttc" id="class_multiplier_html"><div class="ttname"><a href="class_multiplier.html">Multiplier</a></div><div class="ttdoc">Multiplies two inputs. </div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00032">Multiplier.h:32</a></div></div> <div class="ttc" id="class_control_element_solver_html"><div class="ttname"><a href="class_control_element_solver.html">ControlElementSolver</a></div><div class="ttdoc">Solves in the time the control system. Can solve the control system directly from a ControlEditor or ...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00045">ControlElementSolver.h:45</a></div></div> -<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00026">Sum.h:26</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. . </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00036">Gain.h:36</a></div></div> +<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdoc">Sum the all inputs (can choose the input signal). </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00033">Sum.h:33</a></div></div> +<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00035">Gain.h:35</a></div></div> <div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdoc">Limits the input value by superior and inferior values. </div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00032">Limiter.h:32</a></div></div> <div class="ttc" id="class_i_o_control_html"><div class="ttname"><a href="class_i_o_control.html">IOControl</a></div><div class="ttdoc">Provides the communication with the power element. </div><div class="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00035">IOControl.h:35</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. . </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00033">Exponential.h:33</a></div></div> +<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00032">Exponential.h:32</a></div></div> <div class="ttc" id="class_rate_limiter_html"><div class="ttname"><a href="class_rate_limiter.html">RateLimiter</a></div><div class="ttdoc">Limits the rising and/or falling rate. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00032">RateLimiter.h:32</a></div></div> <div class="ttc" id="class_control_element_container_html"><div class="ttname"><a href="class_control_element_container.html">ControlElementContainer</a></div><div class="ttdoc">Class that can contain all control elements. Can identify (using RTTI) the elements from a generic li...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00045">ControlElementContainer.h:45</a></div></div> <div class="ttc" id="class_connection_line_html"><div class="ttname"><a href="class_connection_line.html">ConnectionLine</a></div><div class="ttdoc">Connection between two control elements or other connection line and an element. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00030">ConnectionLine.h:30</a></div></div> -<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00028">TransferFunction.h:28</a></div></div> +<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdoc">Calculates the time response by a frequency domain transfer function. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00035">TransferFunction.h:35</a></div></div> <div class="ttc" id="class_control_editor_html"><div class="ttname"><a href="class_control_editor.html">ControlEditor</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_editor_8h_source.html#l00091">ControlEditor.h:91</a></div></div> <div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdoc">A control element that provides a constant value. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00035">Constant.h:35</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_data_report_8cpp_source.html b/docs/doxygen/html/_data_report_8cpp_source.html index 2975535..56d6917 100644 --- a/docs/doxygen/html/_data_report_8cpp_source.html +++ b/docs/doxygen/html/_data_report_8cpp_source.html @@ -92,23 +92,23 @@ $(document).ready(function(){initNavTree('_data_report_8cpp_source.html','');}); <div class="ttc" id="_workspace_8h_html"><div class="ttname"><a href="_workspace_8h.html">Workspace.h</a></div></div> <div class="ttc" id="class_element_html_a7dce6c1b97facecf3e3b2f1555858b09"><div class="ttname"><a href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">Element::GetParentList</a></div><div class="ttdeci">virtual std::vector< Element * > GetParentList() const</div><div class="ttdoc">Get the parent list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00506">Element.h:506</a></div></div> <div class="ttc" id="_data_report_8h_html"><div class="ttname"><a href="_data_report_8h.html">DataReport.h</a></div></div> -<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00031">PowerElement.h:31</a></div></div> <div class="ttc" id="class_electric_calculation_html_aca3381e8f6663394e4d257a54e4e2a24"><div class="ttname"><a href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24">ElectricCalculation::GetBusList</a></div><div class="ttdeci">const std::vector< Bus * > GetBusList() const</div><div class="ttdoc">Get the buses of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00145">ElectricCalculation.h:145</a></div></div> <div class="ttc" id="class_electric_calculation_html_ad8719b10c3c4b85b316d3daa71064840"><div class="ttname"><a href="class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840">ElectricCalculation::GetSyncGeneratorList</a></div><div class="ttdeci">const std::vector< SyncGenerator * > GetSyncGeneratorList() const</div><div class="ttdoc">Get the synchronous generators of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00175">ElectricCalculation.h:175</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="class_element_html_a57c84a8e6eb80f0fea6e23cdd439d5aa"><div class="ttname"><a href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">Element::IsOnline</a></div><div class="ttdeci">bool IsOnline() const</div><div class="ttdoc">Checks if the element is online or offline. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00227">Element.h:227</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00039">PowerElement.h:39</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> <div class="ttc" id="class_data_report_base_html"><div class="ttname"><a href="class_data_report_base.html">DataReportBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_report_base_8h_source.html#l00038">DataReportBase.h:38</a></div></div> <div class="ttc" id="class_element_html_abb2e253ec1e86353cd7160209c96553c"><div class="ttname"><a href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a></div><div class="ttdeci">static wxString StringFromDouble(double value, int minDecimal=1)</div><div class="ttdoc">Convert a double value to string. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00320">Element.cpp:320</a></div></div> <div class="ttc" id="class_electric_calculation_html_aff1a62936d87e61764b13f3b0212cf92"><div class="ttname"><a href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">ElectricCalculation::GetElementsFromList</a></div><div class="ttdeci">virtual void GetElementsFromList(std::vector< Element *> elementList)</div><div class="ttdoc">Separate the power elements from a generic list. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8cpp_source.html#l00025">ElectricCalculation.cpp:25</a></div></div> -<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> +<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> <div class="ttc" id="class_workspace_html"><div class="ttname"><a href="class_workspace.html">Workspace</a></div><div class="ttdoc">This class manages the graphical and power elements. It is responsible for handling the user&#39;s intera...</div><div class="ttdef"><b>Definition:</b> <a href="_workspace_8h_source.html#l00081">Workspace.h:81</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00038">PowerElement.h:38</a></div></div> <div class="ttc" id="class_electric_calculation_html_af8eff271de83898c536deda1aab22d48"><div class="ttname"><a href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48">ElectricCalculation::GetLineList</a></div><div class="ttdeci">const std::vector< Line * > GetLineList() const</div><div class="ttdoc">Get the lines of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00165">ElectricCalculation.h:165</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_data_report_8h_source.html b/docs/doxygen/html/_data_report_8h_source.html index b16cf97..d3f000e 100644 --- a/docs/doxygen/html/_data_report_8h_source.html +++ b/docs/doxygen/html/_data_report_8h_source.html @@ -90,7 +90,7 @@ $(document).ready(function(){initNavTree('_data_report_8h_source.html','');}); <div class="contents"> <a href="_data_report_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef DATAREPORT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define DATAREPORT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "DataReportBase.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_workspace.html">Workspace</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span><a class="code" href="class_electric_calculation.html">ElectricCalculation</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_data_report.html"> 33</a></span> <span class="keyword">class </span><a class="code" href="class_data_report.html">DataReport</a> : <span class="keyword">public</span> <a class="code" href="class_data_report_base.html">DataReportBase</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">enum</span> GridSelection {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  GRID_ALL = 0,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  GRID_PF,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  GRID_PFBUSES,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  GRID_PFBRANCHES,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  GRID_FAULT,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  GRID_FAULTBUSES,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  GRID_FAULTBRANCHES,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  GRID_FAULTGENERATORS,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_data_report.html">DataReport</a>(wxWindow* parent, <a class="code" href="class_workspace.html">Workspace</a>* workspace);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_data_report.html">DataReport</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetHeaders();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CreateGrids();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> FillValues(GridSelection gridToFill = GRID_ALL);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetRowsColours(wxGrid* grid, <span class="keywordtype">int</span> rowStart = 1);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFaulrGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFaultBranchesGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFaultBusesGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFaultGeneratorsGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPFBranchesGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPowerFlowGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPFBusGridChanged(wxGridEvent& event);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_workspace.html">Workspace</a>* m_workspace = NULL;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">bool</span> m_changingValues = <span class="keyword">false</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Headers choices</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  wxArrayString m_voltageChoices;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  wxArrayString m_activePowerChoices;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  wxArrayString m_reactivePowerChoices;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  wxArrayString m_resistanceChoices;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  wxArrayString m_indReactanceChoices;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  wxArrayString m_capSusceptanceChoices;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  wxArrayString m_currentChoices;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Colors</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  wxColour m_headerColour;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  wxColour m_offlineColour;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  wxColour m_oddRowColour;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  wxColour m_evenRowColour;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> };</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#endif // DATAREPORT_H</span></div><div class="ttc" id="class_data_report_base_html"><div class="ttname"><a href="class_data_report_base.html">DataReportBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_data_report_base_8h_source.html#l00038">DataReportBase.h:38</a></div></div> <div class="ttc" id="class_data_report_html"><div class="ttname"><a href="class_data_report.html">DataReport</a></div><div class="ttdoc">Form that shows the results of power flow and fault calculations. </div><div class="ttdef"><b>Definition:</b> <a href="_data_report_8h_source.html#l00033">DataReport.h:33</a></div></div> -<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> +<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> <div class="ttc" id="class_workspace_html"><div class="ttname"><a href="class_workspace.html">Workspace</a></div><div class="ttdoc">This class manages the graphical and power elements. It is responsible for handling the user&#39;s intera...</div><div class="ttdef"><b>Definition:</b> <a href="_workspace_8h_source.html#l00081">Workspace.h:81</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_electric_calculation_8cpp_source.html b/docs/doxygen/html/_electric_calculation_8cpp_source.html index 03fc2e3..3833a23 100644 --- a/docs/doxygen/html/_electric_calculation_8cpp_source.html +++ b/docs/doxygen/html/_electric_calculation_8cpp_source.html @@ -90,43 +90,43 @@ $(document).ready(function(){initNavTree('_electric_calculation_8cpp_source.html <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a6663e7a20e96ee975bd0f7d54b8a6f70"> 23</a></span> <a class="code" href="class_electric_calculation.html#a6663e7a20e96ee975bd0f7d54b8a6f70">ElectricCalculation::ElectricCalculation</a>() {}</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a1e70291bfa9a0850d9ffcbee44daa2f7"> 24</a></span> <a class="code" href="class_electric_calculation.html#a1e70291bfa9a0850d9ffcbee44daa2f7">ElectricCalculation::~ElectricCalculation</a>() {}</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92"> 25</a></span> <span class="keywordtype">void</span> <a class="code" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">ElectricCalculation::GetElementsFromList</a>(std::vector<Element*> elementList)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_powerElementList.clear();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_busList.clear();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_capacitorList.clear();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_indMotorList.clear();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_inductorList.clear();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_lineList.clear();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_loadList.clear();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_syncGeneratorList.clear();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_syncMotorList.clear();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_transformerList.clear();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">// TODO: Bad design?</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(); it != elementList.end(); it++) {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_powerElementList.push_back(static_cast<PowerElement*>(element));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span>(<a class="code" href="class_bus.html">Bus</a>* bus = dynamic_cast<Bus*>(element))</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_busList.push_back(bus);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = dynamic_cast<Capacitor*>(element))</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_capacitorList.push_back(capacitor);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = dynamic_cast<IndMotor*>(element))</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_indMotorList.push_back(indMotor);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_inductor.html">Inductor</a>* inductor = dynamic_cast<Inductor*>(element))</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_inductorList.push_back(inductor);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_line.html">Line</a>* line = dynamic_cast<Line*>(element))</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_lineList.push_back(line);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_load.html">Load</a>* load = dynamic_cast<Load*>(element))</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_loadList.push_back(load);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = dynamic_cast<SyncGenerator*>(element))</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_syncGeneratorList.push_back(syncGenerator);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = dynamic_cast<SyncMotor*>(element))</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_syncMotorList.push_back(syncMotor);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="class_transformer.html">Transformer</a>* transformer = dynamic_cast<Transformer*>(element))</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_transformerList.push_back(transformer);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Set buses numbers</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">int</span> busNumber = 0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itb = m_busList.begin(); itb != m_busList.end(); itb++) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *itb;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  data.number = busNumber;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  busNumber++;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d"> 73</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">ElectricCalculation::GetYBus</a>(std::vector<std::vector<std::complex<double> > >& yBus,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">double</span> systemPowerBase,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  YBusSequence sequence,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">bool</span> includeSyncMachines,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">bool</span> allLoadsAsImpedances)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span>(m_busList.size() == 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// Clear and fill with zeros the Ybus</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  yBus.clear();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_busList.size(); i++) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  std::vector<std::complex<double> > line;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)m_busList.size(); j++) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  line.push_back(std::complex<double>(0.0, 0.0));</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  yBus.push_back(line);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// Set buses numbers</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">int</span> busNumber = 0;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itb = m_busList.begin(); itb != m_busList.end(); itb++) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *itb;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  data.number = busNumber;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  busNumber++;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="comment">// Load</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_loadList.begin(), itEnd = m_loadList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="class_load.html">Load</a>* load = *it;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(load-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = load->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span>(data.loadType == CONST_IMPEDANCE || allLoadsAsImpedances) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  std::complex<double> yLoad = std::complex<double>(data.activePower, -data.reactivePower);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span>(allLoadsAsImpedances) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  std::complex<double> v = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(load-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  yLoad /= (std::abs(v) * std::abs(v));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  yBus[n][n] += yLoad;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// Capacitor</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_capacitorList.begin(), itEnd = m_capacitorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = *it;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span>(capacitor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(capacitor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = capacitor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  yBus[n][n] += std::complex<double>(0.0, data.reactivePower);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// Inductor</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_inductorList.begin(), itEnd = m_inductorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = *it;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span>(inductor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(inductor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = inductor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  yBus[n][n] += std::complex<double>(0.0, -data.reactivePower);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// Power line</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_lineList.begin(), itEnd = m_lineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = line->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordtype">int</span> n1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">int</span> n2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().number;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">switch</span>(sequence) {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">case</span> POSITIVE_SEQ:</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">case</span> NEGATIVE_SEQ: {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  yBus[n1][n2] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  yBus[n2][n1] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  yBus[n1][n1] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  yBus[n2][n2] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  yBus[n1][n1] += std::complex<double>(0.0, data.capSusceptance / 2.0);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  yBus[n2][n2] += std::complex<double>(0.0, data.capSusceptance / 2.0);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">case</span> ZERO_SEQ: {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  yBus[n1][n2] -= 1.0 / std::complex<double>(data.zeroResistance, data.zeroIndReactance);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  yBus[n2][n1] -= 1.0 / std::complex<double>(data.zeroResistance, data.zeroIndReactance);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  yBus[n1][n1] += 1.0 / std::complex<double>(data.zeroResistance, data.zeroIndReactance);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  yBus[n2][n2] += 1.0 / std::complex<double>(data.zeroResistance, data.zeroIndReactance);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  yBus[n1][n1] += std::complex<double>(0.0, data.zeroCapSusceptance / 2.0);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  yBus[n2][n2] += std::complex<double>(0.0, data.zeroCapSusceptance / 2.0);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// Transformer</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_transformerList.begin(), itEnd = m_transformerList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transformer->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordtype">int</span> n1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordtype">int</span> n2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().number;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// If the transformer have nominal turns ratio (1.0) and no phase shifting, it will be modelled as series</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// impedance.</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">if</span>(data.turnsRatio == 1.0 && data.phaseShift == 0.0 && sequence != ZERO_SEQ) {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  yBus[n1][n2] += -1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  yBus[n2][n1] += -1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  yBus[n1][n1] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  yBus[n2][n2] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="comment">// If the transformer have no-nominal turn ratio and/or phase shifting, it will be modelled in a different</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="comment">// way (see references).</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">//[Ref. 1: Elementos de analise de sistemas de potencia - Stevenson - pg. 232]</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="comment">//[Ref. 2: http://www.ee.washington.edu/research/real/Library/Reports/Tap_Adjustments_in_AC_Load_Flows.pdf]</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">//[Ref. 3: http://www.columbia.edu/~dano/courses/power/notes/power/andersson1.pdf]</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(sequence != ZERO_SEQ) {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// Complex turns ratio</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordtype">double</span> radPhaseShift = wxDegToRad(data.phaseShift);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  std::complex<double> a = std::complex<double>(data.turnsRatio * std::cos(radPhaseShift),</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  -data.turnsRatio * std::sin(radPhaseShift));</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">// Transformer admitance</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  std::complex<double> y = 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span>(sequence == POSITIVE_SEQ) {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  yBus[n1][n1] += y / std::pow(std::abs(a), 2.0);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  yBus[n1][n2] += -(y / std::conj(a));</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  yBus[n2][n1] += -(y / a);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  yBus[n2][n2] += y;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(sequence == NEGATIVE_SEQ) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  yBus[n1][n1] += y / std::pow(std::abs(a), 2.0);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  yBus[n1][n2] += -(y / a);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  yBus[n2][n1] += -(y / std::conj(a));</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  yBus[n2][n2] += y;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(sequence == ZERO_SEQ) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">switch</span>(data.connection) {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">case</span> GWYE_GWYE: {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  std::complex<double> y =</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  1.0 /</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  std::complex<double>(</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  data.zeroResistance + 3.0 * (data.primaryGrndResistance + data.secondaryGrndResistance),</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  data.zeroIndReactance +</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  3.0 * (data.primaryGrndReactance + data.secondaryGrndReactance));</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  std::complex<double> a = std::complex<double>(data.turnsRatio, 0.0);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  yBus[n1][n1] += y / (a * a);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  yBus[n1][n2] += -(y / a);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  yBus[n2][n1] += -(y / a);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  yBus[n2][n2] += y;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">case</span> DELTA_GWYE: {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  std::complex<double> y =</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  1.0 / std::complex<double>(data.zeroResistance + 3.0 * (data.secondaryGrndResistance),</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  data.zeroIndReactance + 3.0 * (data.secondaryGrndReactance));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  yBus[n2][n2] += y;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">case</span> GWYE_DELTA: {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  std::complex<double> y =</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  1.0 / std::complex<double>(data.zeroResistance + 3.0 * (data.primaryGrndResistance),</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  data.zeroIndReactance + 3.0 * (data.primaryGrndReactance));</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  yBus[n1][n1] += y;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">if</span>(includeSyncMachines) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="comment">// Synchronous generator</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">switch</span>(sequence) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">case</span> POSITIVE_SEQ: {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  yBus[n][n] += 1.0 / std::complex<double>(data.positiveResistance, data.positiveReactance);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">case</span> NEGATIVE_SEQ: {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  yBus[n][n] += 1.0 / std::complex<double>(data.negativeResistance, data.negativeReactance);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">case</span> ZERO_SEQ: {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">if</span>(data.groundNeutral) {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  yBus[n][n] += 1.0 / std::complex<double>(data.zeroResistance + 3.0 * data.groundResistance,</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  data.zeroReactance + 3.0 * data.groundReactance);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">// Synchronous motor</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_syncMotorList.begin(), itEnd = m_syncMotorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *it;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">if</span>(syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(syncMotor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = syncMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">switch</span>(sequence) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">case</span> POSITIVE_SEQ: {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  yBus[n][n] += 1.0 / std::complex<double>(data.positiveResistance, data.positiveReactance);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">case</span> NEGATIVE_SEQ: {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  yBus[n][n] += 1.0 / std::complex<double>(data.negativeResistance, data.negativeReactance);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">case</span> ZERO_SEQ: {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">if</span>(data.groundNeutral) {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  yBus[n][n] += 1.0 / std::complex<double>(data.zeroResistance + 3.0 * data.groundResistance,</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  data.zeroReactance + 3.0 * data.groundReactance);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a1d417da6eeb8c12f7be6501fff6f7049"> 304</a></span> <span class="keywordtype">void</span> <a class="code" href="class_electric_calculation.html#a1d417da6eeb8c12f7be6501fff6f7049">ElectricCalculation::UpdateElementsPowerFlow</a>(std::vector<std::complex<double> > voltage,</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  std::vector<std::complex<double> > power,</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  std::vector<BusType> busType,</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  std::vector<ReactiveLimits> reactiveLimit,</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordtype">double</span> zeroLimit = 1e-4;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < reactiveLimit.size(); ++i) {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">if</span>(reactiveLimit[i].maxLimit > -zeroLimit && reactiveLimit[i].maxLimit < zeroLimit)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  reactiveLimit[i].maxLimit = zeroLimit;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">if</span>(reactiveLimit[i].minLimit > -zeroLimit && reactiveLimit[i].minLimit < zeroLimit)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  reactiveLimit[i].minLimit = zeroLimit;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < power.size(); ++i) {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">if</span>(std::real(power[i]) > -zeroLimit && std::real(power[i]) < zeroLimit)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  power[i] = std::complex<double>(0.0, std::imag(power[i]));</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">if</span>(std::imag(power[i]) > -zeroLimit && std::imag(power[i]) < zeroLimit)</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  power[i] = std::complex<double>(std::real(power[i]), 0.0);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="comment">// Buses</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_busList.size(); i++) {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="class_bus.html">Bus</a>* bus = m_busList[i];</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  data.voltage = voltage[i];</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  data.power = power[i];</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  data.busType = busType[i];</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="comment">// Power line</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_lineList.size(); i++) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <a class="code" href="class_line.html">Line</a>* line = m_lineList[i];</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordtype">int</span> n1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordtype">int</span> n2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().number;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = line->GetElectricalData();</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  std::complex<double> v1 = voltage[n1];</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  std::complex<double> v2 = voltage[n2];</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  data.current[0] = (v1 - v2) / std::complex<double>(data.resistance, data.indReactance) +</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  v1 * std::complex<double>(0.0, data.capSusceptance / 2.0);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  data.current[1] = (v2 - v1) / std::complex<double>(data.resistance, data.indReactance) +</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  v2 * std::complex<double>(0.0, data.capSusceptance / 2.0);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  data.powerFlow[0] = v1 * std::conj(data.current[0]);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  data.powerFlow[1] = v2 * std::conj(data.current[1]);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">if</span>(data.powerFlow[0].real() > data.powerFlow[1].real())</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  line-><a class="code" href="class_line.html#a400c8d0397ecdfe6c0a8380ee6bc7e1e">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523">PF_BUS1_TO_BUS2</a>);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  line-><a class="code" href="class_line.html#a400c8d0397ecdfe6c0a8380ee6bc7e1e">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095">PF_BUS2_TO_BUS1</a>);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  line->SetElectricalData(data);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="comment">// Transformer</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_transformerList.size(); i++) {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = m_transformerList[i];</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transformer->GetElectricalData();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordtype">int</span> n1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordtype">int</span> n2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().number;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  std::complex<double> v1 = voltage[n1]; <span class="comment">// Primary voltage</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  std::complex<double> v2 = voltage[n2]; <span class="comment">// Secondary voltage</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="comment">// Transformer admitance</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  std::complex<double> y = 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">if</span>(data.turnsRatio == 1.0 && data.phaseShift == 0.0) {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  data.current[0] = (v1 - v2) * y;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  data.current[1] = (v2 - v1) * y;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordtype">double</span> radPS = wxDegToRad(data.phaseShift);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  std::complex<double> a =</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  std::complex<double>(data.turnsRatio * std::cos(radPS), -data.turnsRatio * std::sin(radPS));</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  data.current[0] = v1 * (y / std::pow(std::abs(a), 2)) - v2 * (y / std::conj(a));</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  data.current[1] = -v1 * (y / a) + v2 * y;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  data.powerFlow[0] = v1 * std::conj(data.current[0]);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  data.powerFlow[1] = v2 * std::conj(data.current[1]);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">if</span>(data.powerFlow[0].real() > data.powerFlow[1].real())</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  transformer-><a class="code" href="class_transformer.html#a328c419af15701734168c8db62eefa36">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523">PF_BUS1_TO_BUS2</a>);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  transformer-><a class="code" href="class_transformer.html#a328c419af15701734168c8db62eefa36">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095">PF_BUS2_TO_BUS1</a>);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> </div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  transformer->SetElectricaData(data);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  }</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="comment">// Synchronous machines</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_busList.size(); i++) {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <a class="code" href="class_bus.html">Bus</a>* bus = m_busList[i];</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="comment">// Get the synchronous machines connected and calculate the load power on the bus.</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  std::vector<SyncGenerator*> syncGeneratorsOnBus;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  std::vector<SyncMotor*> syncMotorsOnBus;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  std::complex<double> loadPower(0.0, 0.0);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> </div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsg = m_syncGeneratorList.begin(); itsg != m_syncGeneratorList.end(); itsg++) {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *itsg;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">if</span>(bus == syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0] && syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>())</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  syncGeneratorsOnBus.push_back(syncGenerator);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsm = m_syncMotorList.begin(); itsm != m_syncMotorList.end(); itsm++) {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *itsm;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">if</span>(bus == syncMotor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0] && syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  syncMotorsOnBus.push_back(syncMotor);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> childData = syncMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  loadPower += std::complex<double>(childData.activePower, 0.0);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itlo = m_loadList.begin(); itlo != m_loadList.end(); itlo++) {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <a class="code" href="class_load.html">Load</a>* load = *itlo;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">if</span>(bus == load-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0] && load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> childData = load->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">if</span>(childData.loadType == CONST_POWER)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  loadPower += std::complex<double>(childData.activePower, childData.reactivePower);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> </div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">if</span>(childData.activePower >= 0.0)</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  load-><a class="code" href="class_power_element.html#a2ee71f9eb90beadf5439ce9f70469b49">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  load-><a class="code" href="class_power_element.html#a2ee71f9eb90beadf5439ce9f70469b49">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a>);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itim = m_indMotorList.begin(); itim != m_indMotorList.end(); itim++) {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = *itim;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">if</span>(bus == indMotor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0] && indMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> childData = indMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  loadPower += std::complex<double>(childData.activePower, childData.reactivePower);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span>(childData.activePower >= 0.0)</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  indMotor-><a class="code" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  indMotor-><a class="code" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a>);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="comment">// Set the sync generator power</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsg = syncGeneratorsOnBus.begin(); itsg != syncGeneratorsOnBus.end(); itsg++) {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator = *itsg;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">if</span>(generator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> childData = generator->GetElectricalData();</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">if</span>(busType[i] == BUS_SLACK) {</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordtype">double</span> activePower =</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  (power[i].real() + loadPower.real()) * systemPowerBase / (<span class="keywordtype">double</span>)(syncGeneratorsOnBus.size());</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> </div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">switch</span>(childData.activePowerUnit) {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  activePower /= systemPowerBase;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  activePower /= 1e3;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  activePower /= 1e6;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> </div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  childData.activePower = activePower;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">if</span>(busType[i] == BUS_PV || busType[i] == BUS_SLACK) {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="comment">// double reactivePower = (power[i].imag() + loadPower.imag()) * systemPowerBase /</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="comment">// (double)(syncGeneratorsOnBus.size() + syncMotorsOnBus.size());</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> childData_PU = generator->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordtype">double</span> reactivePower = (power[i].imag() + loadPower.imag()) * systemPowerBase;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> </div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">if</span>(reactiveLimit[i].limitReached == RL_MAX_REACHED)</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  reactivePower *= (childData_PU.maxReactive / reactiveLimit[i].maxLimit);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(reactiveLimit[i].limitReached == RL_MIN_REACHED)</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  reactivePower *= (childData_PU.minReactive / reactiveLimit[i].minLimit);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  reactivePower /= (double)(syncGeneratorsOnBus.size() + syncMotorsOnBus.size());</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">switch</span>(childData.reactivePowerUnit) {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  reactivePower /= systemPowerBase;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  reactivePower /= 1e3;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  reactivePower /= 1e6;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  childData.reactivePower = reactivePower;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  }</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">if</span>(childData.activePower >= 0.0)</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  generator-><a class="code" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a>);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  generator-><a class="code" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  generator->SetElectricalData(childData);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="comment">// Set the sync motor reactive power</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordtype">double</span> exceededReactive = 0.0;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordtype">int</span> numMachines = syncGeneratorsOnBus.size() + syncMotorsOnBus.size();</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsm = syncMotorsOnBus.begin(); itsm != syncMotorsOnBus.end(); itsm++) {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *itsm;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> childData = syncMotor->GetElectricalData();</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordtype">bool</span> reachedMachineLimit = <span class="keyword">false</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">if</span>(busType[i] == BUS_PV || busType[i] == BUS_SLACK) {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="comment">// double reactivePower = (power[i].imag() + loadPower.imag()) * systemPowerBase /</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="comment">// (double)(syncGeneratorsOnBus.size() + syncMotorsOnBus.size());</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> childData_PU = syncMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> </div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordtype">double</span> reactivePower = power[i].imag() + loadPower.imag();</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> </div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="comment">// Bus reachd maximum reactive limit.</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">if</span>(reactiveLimit[i].limitReached == RL_MAX_REACHED)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  reactivePower *= (childData_PU.maxReactive / reactiveLimit[i].maxLimit);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="comment">// Bus reached minimum reactive limit.</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(reactiveLimit[i].limitReached == RL_MIN_REACHED)</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  reactivePower *= (childData_PU.minReactive / reactiveLimit[i].minLimit);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="comment">// Bus didn't reach any limits</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  reactivePower /= (double)(numMachines);</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">if</span>(childData_PU.haveMaxReactive && (reactivePower > childData_PU.maxReactive)) {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  exceededReactive += reactivePower - childData_PU.maxReactive;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  reactivePower = childData_PU.maxReactive;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  reachedMachineLimit = <span class="keyword">true</span>;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(childData_PU.haveMinReactive && (reactivePower < childData_PU.minReactive)) {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  exceededReactive += reactivePower - childData_PU.minReactive;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  reactivePower = childData_PU.minReactive;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  reachedMachineLimit = <span class="keyword">true</span>;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>((!childData_PU.haveMaxReactive && reactiveLimit[i].limitReached == RL_MAX_REACHED) ||</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  (!childData_PU.haveMinReactive && reactiveLimit[i].limitReached == RL_MIN_REACHED) ||</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  (!childData_PU.haveMaxReactive && !childData_PU.haveMaxReactive)) {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  reactivePower += exceededReactive;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  exceededReactive = 0.0;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  }</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  reactivePower *= systemPowerBase;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> </div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordflow">switch</span>(childData.reactivePowerUnit) {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  reactivePower /= systemPowerBase;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  reactivePower /= 1e3;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  reactivePower /= 1e6;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  }</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  childData.reactivePower = reactivePower;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> </div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">if</span>(childData.activePower > 0.0)</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  syncMotor-><a class="code" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  syncMotor-><a class="code" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a>);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span> </div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  syncMotor->SetElectricalData(childData);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> </div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">if</span>(reachedMachineLimit) {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  syncMotorsOnBus.erase(itsm);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  itsm = syncMotorsOnBus.begin();</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> </div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c"> 589</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c">ElectricCalculation::InvertMatrix</a>(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  std::vector<std::vector<std::complex<double> > >& inverse)</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> {</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordtype">int</span> order = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(matrix.size());</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> </div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  inverse.clear();</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="comment">// Fill the inverse matrix with identity.</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; ++i) {</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  std::vector<std::complex<double> > line;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < order; ++j) {</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  line.push_back(i == j ? std::complex<double>(1.0, 0.0) : std::complex<double>(0.0, 0.0));</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  inverse.push_back(line);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  }</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span> </div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="comment">// Check if a main diagonal value of the matrix is zero, if one is zero, try a linear combination to remove it.</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; ++i) {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < order; ++j) {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">if</span>(i == j && matrix[i][j] == std::complex<double>(0.0, 0.0)) {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keywordtype">int</span> row = 0;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordflow">while</span>(row < order) {</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keywordflow">if</span>(matrix[row][j] != std::complex<double>(0.0, 0.0)) {</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < order; ++k) {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  matrix[i][k] += matrix[row][k];</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  inverse[i][k] += inverse[row][k];</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  }</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  row++;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  <span class="comment">// If all line values are zero, the matrix is singular and the solution is impossible.</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="keywordflow">if</span>(row == order) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  }</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  }</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> </div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="comment">// Linear combinations are made in both matrices, the goal is the input matrix become the identity. The final result</span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="comment">// have two matrices: the identity and the inverse of the input.</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; ++i) {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < order; ++j) {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keywordflow">if</span>(i != j) {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">if</span>(matrix[i][i] == std::complex<double>(0.0, 0.0)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> </div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  std::complex<double> factor = matrix[j][i] / matrix[i][i];</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < order; ++k) {</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  matrix[j][k] -= factor * matrix[i][k];</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  inverse[j][k] -= factor * inverse[i][k];</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  }</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="comment">// Main diagonal calculation.</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; ++i) {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < order; ++j) {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="keywordflow">if</span>(i == j) {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordflow">if</span>(matrix[i][j] == std::complex<double>(0.0, 0.0)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> </div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  std::complex<double> factor = (matrix[i][j] - std::complex<double>(1.0, 0.0)) / matrix[i][j];</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < order; ++k) {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  matrix[j][k] -= factor * matrix[i][k];</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  inverse[j][k] -= factor * inverse[i][k];</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  }</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  }</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  }</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> }</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> </div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="keywordtype">void</span> ElectricCalculation::ABCtoDQ0(std::complex<double> complexValue, <span class="keywordtype">double</span> angle, <span class="keywordtype">double</span>& dValue, <span class="keywordtype">double</span>& qValue)</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> {</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  dValue = -std::real(complexValue) * std::sin(angle) + std::imag(complexValue) * std::cos(angle);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  qValue = std::real(complexValue) * std::cos(angle) + std::imag(complexValue) * std::sin(angle);</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> }</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <span class="keywordtype">void</span> ElectricCalculation::DQ0toABC(<span class="keywordtype">double</span> dValue, <span class="keywordtype">double</span> qValue, <span class="keywordtype">double</span> angle, std::complex<double>& complexValue)</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span> {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordtype">double</span> real = qValue * std::cos(angle) - dValue * std::sin(angle);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keywordtype">double</span> imag = qValue * std::sin(angle) + dValue * std::cos(angle);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  complexValue = std::complex<double>(real, imag);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span> }</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> </div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span> std::vector<std::complex<double> > ElectricCalculation::GaussianElimination(</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  std::vector<std::complex<double> > array)</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span> {</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="comment">//[Ref] http://pt.wikipedia.org/wiki/Elimina%C3%A7%C3%A3o_de_Gauss</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  std::vector<std::complex<double> > solution;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span> </div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  std::vector<std::vector<std::complex<double> > > triangMatrix;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  triangMatrix.resize(matrix.size());</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < matrix.size(); i++) {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  triangMatrix[i].resize(matrix.size());</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  }</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span> </div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < matrix.size(); i++) {</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  solution.push_back(array[i]);</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  }</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span> </div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < matrix.size(); i++) {</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < matrix.size(); j++) {</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  triangMatrix[i][j] = matrix[i][j];</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  }</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  }</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> </div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k = 0; k < matrix.size(); k++) {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> k1 = k + 1;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = k; i < matrix.size(); i++) {</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keywordflow">if</span>(triangMatrix[i][k] != std::complex<double>(0.0, 0.0)) {</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = k1; j < matrix.size(); j++) {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  triangMatrix[i][j] = triangMatrix[i][j] / triangMatrix[i][k];</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  }</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  solution[i] = solution[i] / triangMatrix[i][k];</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = k1; i < matrix.size(); i++) {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="keywordflow">if</span>(triangMatrix[i][k] != std::complex<double>(0.0, 0.0)) {</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = k1; j < matrix.size(); j++) {</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  triangMatrix[i][j] -= triangMatrix[k][j];</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  solution[i] -= solution[k];</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  }</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  }</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  }</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = matrix.size() - 2; i >= 0; i--) {</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = matrix.size() - 1; j >= i + 1; j--) {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  solution[i] -= triangMatrix[i][j] * solution[j];</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  }</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  }</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keywordflow">return</span> solution;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span> }</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> </div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span> Machines::SyncMachineModel ElectricCalculation::GetMachineModel(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator)</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span> {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keyword">auto</span> data = generator->GetElectricalData();</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">if</span>(data.transTd0 != 0.0) {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keywordflow">if</span>(data.transTq0 != 0.0) {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">if</span>(data.subTd0 != 0.0 || data.subTq0 != 0.0) {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keywordflow">return</span> Machines::SM_MODEL_5;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">return</span> Machines::SM_MODEL_3;</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  <span class="keywordflow">if</span>(data.subTd0 != 0.0 || data.subTq0 != 0.0) {</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">return</span> Machines::SM_MODEL_4;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  }</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="keywordflow">return</span> Machines::SM_MODEL_2;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  }</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  }</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span> </div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">return</span> Machines::SM_MODEL_1;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span> }</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span> </div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span> std::vector<std::complex<double> > ElectricCalculation::ComplexMatrixTimesVector(</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  std::vector<std::complex<double> > vector)</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span> {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  std::vector<std::complex<double> > solution;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < matrix.size(); i++) {</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  solution.push_back(std::complex<double>(0.0, 0.0));</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span> </div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j < matrix.size(); j++) {</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  solution[i] += matrix[i][j] * vector[j];</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  }</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  }</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span> </div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">return</span> solution;</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span> }</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> </div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> <span class="keywordtype">void</span> ElectricCalculation::GetLUDecomposition(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  std::vector<std::vector<std::complex<double> > >& matrixL,</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  std::vector<std::vector<std::complex<double> > >& matrixU)</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span> {</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="comment">// Doolittle method</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="comment">// [Ref] http://www3.nd.edu/~zxu2/acms40390F11/Alg-LU-Crout.pdf</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="comment">// [Ref] http://www.engr.colostate.edu/~thompson/hPage/CourseMat/Tutorials/CompMethods/doolittle.pdf</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> </div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordtype">int</span> size = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(matrix.size()); <span class="comment">// Decomposed matrix size.</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> </div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="comment">// Set upper and lower matrices sizes.</span></div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  matrixL.resize(size);</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  matrixU.resize(size);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < size; i++) {</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  matrixL[i].resize(size);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  matrixU[i].resize(size);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  }</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> </div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="comment">// First row of upper matrix and first column of lower matrix.</span></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < size; i++) {</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  matrixU[0][i] = matrix[0][i];</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  matrixL[i][0] = matrix[i][0] / matrixU[0][0];</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  }</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> </div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="comment">// Lower matrix main diagonal.</span></div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < size; i++) {</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  matrixL[i][i] = std::complex<double>(1.0, 0.0);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  }</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> </div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < size - 1; i++) {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="comment">// Upper matrix main diagonal.</span></div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  matrixU[i][i] = matrix[i][i];</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < i; k++) {</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  matrixU[i][i] -= matrixL[i][k] * matrixU[k][i];</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  }</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> </div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="comment">// Others elements of upper matrix</span></div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = i + 1; j < size; j++) {</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  matrixU[i][j] = matrix[i][j];</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < i; k++) {</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  matrixU[i][j] -= matrixL[i][k] * matrixU[k][j];</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  }</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> </div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="comment">// Lower matrix elements</span></div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = i + 1; j < size; j++) {</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  matrixL[j][i] = matrix[j][i];</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < i; k++) {</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  matrixL[j][i] -= matrixL[j][k] * matrixU[k][i];</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  }</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  matrixL[j][i] = matrixL[j][i] / matrixU[i][i];</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  }</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  }</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span> </div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="comment">// Last element of upper matrix.</span></div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  matrixU[size - 1][size - 1] = matrix[size - 1][size - 1];</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < size - 1; k++) {</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  matrixU[size - 1][size - 1] -= matrixL[size - 1][k] * matrixU[k][size - 1];</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span> }</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> </div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> std::vector<std::complex<double> > ElectricCalculation::LUEvaluate(std::vector<std::vector<std::complex<double> > > u,</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  std::vector<std::vector<std::complex<double> > > l,</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  std::vector<std::complex<double> > b)</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span> {</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordtype">int</span> size = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(b.size());</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  std::vector<std::complex<double> > x;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  std::vector<std::complex<double> > y;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  x.resize(size);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  y.resize(size);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span> </div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="comment">// Forward</span></div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < size; i++) {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  y[i] = b[i];</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < i; j++) {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  y[i] -= l[i][j] * y[j];</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  }</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  y[i] /= l[i][i];</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  }</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="comment">// Backward</span></div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = size - 1; i >= 0; i--) {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  x[i] = y[i];</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = i + 1; j < size; j++) {</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  x[i] -= u[i][j] * x[j];</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  }</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  x[i] /= u[i][i];</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  }</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keywordflow">return</span> x;</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> }</div><div class="ttc" id="struct_ind_motor_electrical_data_html"><div class="ttname"><a href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00025">IndMotor.h:25</a></div></div> <div class="ttc" id="struct_sync_generator_electrical_data_html"><div class="ttname"><a href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00025">SyncGenerator.h:25</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_element_html_a7dce6c1b97facecf3e3b2f1555858b09"><div class="ttname"><a href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">Element::GetParentList</a></div><div class="ttdeci">virtual std::vector< Element * > GetParentList() const</div><div class="ttdoc">Get the parent list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00506">Element.h:506</a></div></div> <div class="ttc" id="class_power_element_html_a2ee71f9eb90beadf5439ce9f70469b49"><div class="ttname"><a href="class_power_element.html#a2ee71f9eb90beadf5439ce9f70469b49">PowerElement::SetPowerFlowDirection</a></div><div class="ttdeci">virtual void SetPowerFlowDirection(PowerFlowDirection pfDirection)</div><div class="ttdoc">Set the direction of the power flow. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00187">PowerElement.h:187</a></div></div> -<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div></div> +<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div></div> <div class="ttc" id="struct_inductor_electrical_data_html"><div class="ttname"><a href="struct_inductor_electrical_data.html">InductorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00025">Inductor.h:25</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00036">PowerElement.h:36</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="struct_bus_electrical_data_html"><div class="ttname"><a href="struct_bus_electrical_data.html">BusElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00024">Bus.h:24</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00081">PowerElement.h:81</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00035">PowerElement.h:35</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="class_electric_calculation_html_a1e70291bfa9a0850d9ffcbee44daa2f7"><div class="ttname"><a href="class_electric_calculation.html#a1e70291bfa9a0850d9ffcbee44daa2f7">ElectricCalculation::~ElectricCalculation</a></div><div class="ttdeci">~ElectricCalculation()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8cpp_source.html#l00024">ElectricCalculation.cpp:24</a></div></div> <div class="ttc" id="class_machines_html_a293cb955dcacaaebca564b8a91ce57d3"><div class="ttname"><a href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3">Machines::SetPowerFlowDirection</a></div><div class="ttdeci">virtual void SetPowerFlowDirection(PowerFlowDirection pfDirection)</div><div class="ttdoc">Set the direction of the power flow. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00267">Machines.cpp:267</a></div></div> <div class="ttc" id="class_element_html_a57c84a8e6eb80f0fea6e23cdd439d5aa"><div class="ttname"><a href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">Element::IsOnline</a></div><div class="ttdeci">bool IsOnline() const</div><div class="ttdoc">Checks if the element is online or offline. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00227">Element.h:227</a></div></div> <div class="ttc" id="class_transformer_html_a328c419af15701734168c8db62eefa36"><div class="ttname"><a href="class_transformer.html#a328c419af15701734168c8db62eefa36">Transformer::SetPowerFlowDirection</a></div><div class="ttdeci">virtual void SetPowerFlowDirection(PowerFlowDirection pfDirection)</div><div class="ttdoc">Set the direction of the power flow. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00405">Transformer.cpp:405</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> <div class="ttc" id="class_electric_calculation_html_af00a6599f2b0b4e35bf0f8c70195447c"><div class="ttname"><a href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c">ElectricCalculation::InvertMatrix</a></div><div class="ttdeci">virtual bool InvertMatrix(std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::vector< std::complex< double > > > &inverse)</div><div class="ttdoc">Invert a matrix. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8cpp_source.html#l00589">ElectricCalculation.cpp:589</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095">PF_BUS2_TO_BUS1</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00083">PowerElement.h:83</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> <div class="ttc" id="struct_line_electrical_data_html"><div class="ttname"><a href="struct_line_electrical_data.html">LineElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00024">Line.h:24</a></div></div> <div class="ttc" id="class_electric_calculation_html_a939e6e75b5e0cb555a82b2f9ef59c59d"><div class="ttname"><a href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">ElectricCalculation::GetYBus</a></div><div class="ttdeci">virtual bool GetYBus(std::vector< std::vector< std::complex< double > > > &yBus, double systemPowerBase, YBusSequence sequence=POSITIVE_SEQ, bool includeSyncMachines=false, bool allLoadsAsImpedances=false)</div><div class="ttdoc">Get the admittance matrix from the list of elements (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8cpp_source.html#l00073">ElectricCalculation.cpp:73</a></div></div> <div class="ttc" id="class_electric_calculation_html_a1d417da6eeb8c12f7be6501fff6f7049"><div class="ttname"><a href="class_electric_calculation.html#a1d417da6eeb8c12f7be6501fff6f7049">ElectricCalculation::UpdateElementsPowerFlow</a></div><div class="ttdeci">virtual void UpdateElementsPowerFlow(std::vector< std::complex< double > > voltage, std::vector< std::complex< double > > power, std::vector< BusType > busType, std::vector< ReactiveLimits > reactiveLimit, double systemPowerBase)</div><div class="ttdoc">Update the elements after the power flow calculation. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8cpp_source.html#l00304">ElectricCalculation.cpp:304</a></div></div> <div class="ttc" id="struct_load_electrical_data_html"><div class="ttname"><a href="struct_load_electrical_data.html">LoadElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00026">Load.h:26</a></div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00080">PowerElement.h:80</a></div></div> <div class="ttc" id="class_electric_calculation_html_a6663e7a20e96ee975bd0f7d54b8a6f70"><div class="ttname"><a href="class_electric_calculation.html#a6663e7a20e96ee975bd0f7d54b8a6f70">ElectricCalculation::ElectricCalculation</a></div><div class="ttdeci">ElectricCalculation()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8cpp_source.html#l00023">ElectricCalculation.cpp:23</a></div></div> -<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00033">IndMotor.h:33</a></div></div> -<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00031">Capacitor.h:31</a></div></div> +<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdoc">Induction motor power element. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00040">IndMotor.h:40</a></div></div> +<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdoc">Shunt capactior power element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00038">Capacitor.h:38</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523">PF_BUS1_TO_BUS2</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00082">PowerElement.h:82</a></div></div> -<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00031">Inductor.h:31</a></div></div> +<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdoc">Inductor shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00038">Inductor.h:38</a></div></div> <div class="ttc" id="class_electric_calculation_html_aff1a62936d87e61764b13f3b0212cf92"><div class="ttname"><a href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">ElectricCalculation::GetElementsFromList</a></div><div class="ttdeci">virtual void GetElementsFromList(std::vector< Element *> elementList)</div><div class="ttdoc">Separate the power elements from a generic list. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8cpp_source.html#l00025">ElectricCalculation.cpp:25</a></div></div> <div class="ttc" id="struct_transformer_electrical_data_html"><div class="ttname"><a href="struct_transformer_electrical_data.html">TransformerElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00037">Transformer.h:37</a></div></div> <div class="ttc" id="class_line_html_a400c8d0397ecdfe6c0a8380ee6bc7e1e"><div class="ttname"><a href="class_line.html#a400c8d0397ecdfe6c0a8380ee6bc7e1e">Line::SetPowerFlowDirection</a></div><div class="ttdeci">virtual void SetPowerFlowDirection(PowerFlowDirection pfDirection)</div><div class="ttdoc">Set the direction of the power flow. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00449">Line.cpp:449</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> <div class="ttc" id="struct_capacitor_electrical_data_html"><div class="ttname"><a href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00025">Capacitor.h:25</a></div></div> <div class="ttc" id="struct_sync_motor_electrical_data_html"><div class="ttname"><a href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00025">SyncMotor.h:25</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_electric_calculation_8h.html b/docs/doxygen/html/_electric_calculation_8h.html index 900a8c0..dd36dcb 100644 --- a/docs/doxygen/html/_electric_calculation_8h.html +++ b/docs/doxygen/html/_electric_calculation_8h.html @@ -91,23 +91,20 @@ $(document).ready(function(){initNavTree('_electric_calculation_8h.html','');}); <div class="title">ElectricCalculation.h File Reference</div> </div> </div><!--header--> <div class="contents"> - -<p>Base class of electric calculations, with general methods. -<a href="#details">More...</a></p> <div class="textblock"><code>#include <vector></code><br /> <code>#include <complex></code><br /> <code>#include "<a class="el" href="_element_8h_source.html">Element.h</a>"</code><br /> <code>#include "<a class="el" href="_power_element_8h_source.html">PowerElement.h</a>"</code><br /> -<code>#include "Bus.h"</code><br /> -<code>#include "Capacitor.h"</code><br /> -<code>#include "IndMotor.h"</code><br /> -<code>#include "Inductor.h"</code><br /> -<code>#include "Line.h"</code><br /> -<code>#include "Load.h"</code><br /> -<code>#include "SyncGenerator.h"</code><br /> -<code>#include "SyncMotor.h"</code><br /> -<code>#include "Transformer.h"</code><br /> -<code>#include "PropertiesData.h"</code><br /> +<code>#include "<a class="el" href="_bus_8h_source.html">Bus.h</a>"</code><br /> +<code>#include "<a class="el" href="_capacitor_8h_source.html">Capacitor.h</a>"</code><br /> +<code>#include "<a class="el" href="_ind_motor_8h_source.html">IndMotor.h</a>"</code><br /> +<code>#include "<a class="el" href="_inductor_8h_source.html">Inductor.h</a>"</code><br /> +<code>#include "<a class="el" href="_line_8h_source.html">Line.h</a>"</code><br /> +<code>#include "<a class="el" href="_load_8h_source.html">Load.h</a>"</code><br /> +<code>#include "<a class="el" href="_sync_generator_8h_source.html">SyncGenerator.h</a>"</code><br /> +<code>#include "<a class="el" href="_sync_motor_8h_source.html">SyncMotor.h</a>"</code><br /> +<code>#include "<a class="el" href="_transformer_8h_source.html">Transformer.h</a>"</code><br /> +<code>#include "<a class="el" href="_properties_data_8h_source.html">PropertiesData.h</a>"</code><br /> </div> <p><a href="_electric_calculation_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> @@ -116,6 +113,7 @@ Classes</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_reactive_limits.html">ReactiveLimits</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electric_calculation.html">ElectricCalculation</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Base class of electric calculations, with general methods. <a href="class_electric_calculation.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> @@ -142,11 +140,7 @@ Enumerations</h2></td></tr> }</td></tr> <tr class="separator:a73321f98d9ea4582f9de005ef5ed8594"><td class="memSeparator" colspan="2"> </td></tr> </table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Base class of electric calculations, with general methods. </p> - -<p class="definition">Definition in file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> -</div></div><!-- contents --> +</div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> diff --git a/docs/doxygen/html/_electric_calculation_8h_source.html b/docs/doxygen/html/_electric_calculation_8h_source.html index 8715e9c..b1c7bf6 100644 --- a/docs/doxygen/html/_electric_calculation_8h_source.html +++ b/docs/doxygen/html/_electric_calculation_8h_source.html @@ -88,19 +88,29 @@ $(document).ready(function(){initNavTree('_electric_calculation_8h_source.html', <div class="title">ElectricCalculation.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_electric_calculation_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef ELECTRICCALCULATION_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define ELECTRICCALCULATION_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <complex></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "Capacitor.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "IndMotor.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Inductor.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Line.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Load.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "SyncMotor.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "Transformer.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "PropertiesData.h"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">enum</span> BusType { BUS_SLACK = 0, BUS_PV, BUS_PQ };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">enum</span> ReactiveLimitsType {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  RL_UNLIMITED = 0, <span class="comment">// The bus can generate any ammount of reactive power.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  RL_LIMITED, <span class="comment">// The bus reactive power generation is limited.</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  RL_UNLIMITED_SOURCE, <span class="comment">// The bus have at least one source of infinite reative power.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  RL_MAX_REACHED, <span class="comment">// Max limit reached</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  RL_MIN_REACHED, <span class="comment">// Min limit reached</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  RL_NONE_REACHED <span class="comment">// No limits reached</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">enum</span> YBusSequence { POSITIVE_SEQ = 0, NEGATIVE_SEQ, ZERO_SEQ };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="struct_reactive_limits.html"> 51</a></span> <span class="keyword">struct </span><a class="code" href="struct_reactive_limits.html">ReactiveLimits</a> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">double</span> maxLimit = 0.0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">double</span> minLimit = 0.0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  ReactiveLimitsType maxLimitType = RL_UNLIMITED;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  ReactiveLimitsType minLimitType = RL_UNLIMITED;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  ReactiveLimitsType limitReached = RL_NONE_REACHED;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="class_electric_calculation.html"> 66</a></span> <span class="keyword">class </span><a class="code" href="class_electric_calculation.html">ElectricCalculation</a></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="class_electric_calculation.html">ElectricCalculation</a>();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  ~<a class="code" href="class_electric_calculation.html">ElectricCalculation</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> GetElementsFromList(std::vector<Element*> elementList);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetYBus(std::vector<std::vector<std::complex<double> > >& yBus,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">double</span> systemPowerBase,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  YBusSequence sequence = POSITIVE_SEQ,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">bool</span> includeSyncMachines = <span class="keyword">false</span>,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">bool</span> allLoadsAsImpedances = <span class="keyword">false</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> InvertMatrix(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  std::vector<std::vector<std::complex<double> > >& inverse);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateElementsPowerFlow(std::vector<std::complex<double> > voltage,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  std::vector<std::complex<double> > power,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  std::vector<BusType> busType,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  std::vector<ReactiveLimits> reactiveLimit,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> ABCtoDQ0(std::complex<double> complexValue, <span class="keywordtype">double</span> angle, <span class="keywordtype">double</span>& dValue, <span class="keywordtype">double</span>& qValue);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">void</span> DQ0toABC(<span class="keywordtype">double</span> dValue, <span class="keywordtype">double</span> qValue, <span class="keywordtype">double</span> angle, std::complex<double>& complexValue);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  std::vector<std::complex<double> > GaussianElimination(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  std::vector<std::complex<double> > array);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  Machines::SyncMachineModel GetMachineModel(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  std::vector<std::complex<double> > ComplexMatrixTimesVector(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  std::vector<std::complex<double> > vector);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">void</span> GetLUDecomposition(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  std::vector<std::vector<std::complex<double> > >& matrixL,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  std::vector<std::vector<std::complex<double> > >& matrixU);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  std::vector<std::complex<double> > LUEvaluate(std::vector<std::vector<std::complex<double> > > u,</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  std::vector<std::vector<std::complex<double> > > l,</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  std::vector<std::complex<double> > b);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24"> 145</a></span>  <span class="keyword">const</span> std::vector<Bus*> <a class="code" href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24">GetBusList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_busList; }</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a4ddabc6210146ae1ccae5f6911095bfd"> 150</a></span>  <span class="keyword">const</span> std::vector<Capacitor*> <a class="code" href="class_electric_calculation.html#a4ddabc6210146ae1ccae5f6911095bfd">GetCapacitorList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_capacitorList; }</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a906ce639a5d6c5d7946fe8824f1b4f1b"> 155</a></span>  <span class="keyword">const</span> std::vector<IndMotor*> <a class="code" href="class_electric_calculation.html#a906ce639a5d6c5d7946fe8824f1b4f1b">GetIndMotorList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_indMotorList; }</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a8709a452d684d4224d32591c281ae0ed"> 160</a></span>  <span class="keyword">const</span> std::vector<Inductor*> <a class="code" href="class_electric_calculation.html#a8709a452d684d4224d32591c281ae0ed">GetInductorList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_inductorList; }</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48"> 165</a></span>  <span class="keyword">const</span> std::vector<Line*> <a class="code" href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48">GetLineList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_lineList; }</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#aa5e278a1c5ba1b6159c21ae2ff2b23b4"> 170</a></span>  <span class="keyword">const</span> std::vector<Load*> <a class="code" href="class_electric_calculation.html#aa5e278a1c5ba1b6159c21ae2ff2b23b4">GetLoadList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_loadList; }</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840"> 175</a></span>  <span class="keyword">const</span> std::vector<SyncGenerator*> <a class="code" href="class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840">GetSyncGeneratorList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_syncGeneratorList; }</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#ae9b5e9b51615141e88de0a0f99a7741e"> 180</a></span>  <span class="keyword">const</span> std::vector<SyncMotor*> <a class="code" href="class_electric_calculation.html#ae9b5e9b51615141e88de0a0f99a7741e">GetSyncMotorList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_syncMotorList; }</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e"> 185</a></span>  <span class="keyword">const</span> std::vector<Transformer*> <a class="code" href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e">GetTransformerList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_transformerList; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  std::vector<PowerElement*> m_powerElementList;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  std::vector<Bus*> m_busList;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  std::vector<Capacitor*> m_capacitorList;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  std::vector<IndMotor*> m_indMotorList;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  std::vector<Inductor*> m_inductorList;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  std::vector<Line*> m_lineList;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  std::vector<Load*> m_loadList;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  std::vector<SyncGenerator*> m_syncGeneratorList;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  std::vector<SyncMotor*> m_syncMotorList;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  std::vector<Transformer*> m_transformerList;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> };</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor">#endif // ELECTRICCALCULATION_H</span></div><div class="ttc" id="class_electric_calculation_html_a3b89149e5fb56253c0629c9d260b3b7e"><div class="ttname"><a href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e">ElectricCalculation::GetTransformerList</a></div><div class="ttdeci">const std::vector< Transformer * > GetTransformerList() const</div><div class="ttdoc">Get the transformers of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00185">ElectricCalculation.h:185</a></div></div> +<a href="_electric_calculation_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef ELECTRICCALCULATION_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define ELECTRICCALCULATION_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <complex></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="_bus_8h.html">Bus.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="_capacitor_8h.html">Capacitor.h</a>"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="_ind_motor_8h.html">IndMotor.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="_inductor_8h.html">Inductor.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="_line_8h.html">Line.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="_load_8h.html">Load.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="_sync_generator_8h.html">SyncGenerator.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="_sync_motor_8h.html">SyncMotor.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="_transformer_8h.html">Transformer.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="_properties_data_8h.html">PropertiesData.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">enum</span> BusType { BUS_SLACK = 0, BUS_PV, BUS_PQ };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">enum</span> ReactiveLimitsType {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  RL_UNLIMITED = 0, <span class="comment">// The bus can generate any ammount of reactive power.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  RL_LIMITED, <span class="comment">// The bus reactive power generation is limited.</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  RL_UNLIMITED_SOURCE, <span class="comment">// The bus have at least one source of infinite reative power.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  RL_MAX_REACHED, <span class="comment">// Max limit reached</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  RL_MIN_REACHED, <span class="comment">// Min limit reached</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  RL_NONE_REACHED <span class="comment">// No limits reached</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">enum</span> YBusSequence { POSITIVE_SEQ = 0, NEGATIVE_SEQ, ZERO_SEQ };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="struct_reactive_limits.html"> 51</a></span> <span class="keyword">struct </span><a class="code" href="struct_reactive_limits.html">ReactiveLimits</a> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">double</span> maxLimit = 0.0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">double</span> minLimit = 0.0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  ReactiveLimitsType maxLimitType = RL_UNLIMITED;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  ReactiveLimitsType minLimitType = RL_UNLIMITED;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  ReactiveLimitsType limitReached = RL_NONE_REACHED;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="class_electric_calculation.html"> 66</a></span> <span class="keyword">class </span><a class="code" href="class_electric_calculation.html">ElectricCalculation</a></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="class_electric_calculation.html">ElectricCalculation</a>();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  ~<a class="code" href="class_electric_calculation.html">ElectricCalculation</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> GetElementsFromList(std::vector<Element*> elementList);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetYBus(std::vector<std::vector<std::complex<double> > >& yBus,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">double</span> systemPowerBase,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  YBusSequence sequence = POSITIVE_SEQ,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">bool</span> includeSyncMachines = <span class="keyword">false</span>,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">bool</span> allLoadsAsImpedances = <span class="keyword">false</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> InvertMatrix(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  std::vector<std::vector<std::complex<double> > >& inverse);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateElementsPowerFlow(std::vector<std::complex<double> > voltage,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  std::vector<std::complex<double> > power,</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  std::vector<BusType> busType,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  std::vector<ReactiveLimits> reactiveLimit,</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> ABCtoDQ0(std::complex<double> complexValue, <span class="keywordtype">double</span> angle, <span class="keywordtype">double</span>& dValue, <span class="keywordtype">double</span>& qValue);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">void</span> DQ0toABC(<span class="keywordtype">double</span> dValue, <span class="keywordtype">double</span> qValue, <span class="keywordtype">double</span> angle, std::complex<double>& complexValue);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  std::vector<std::complex<double> > GaussianElimination(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  std::vector<std::complex<double> > array);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  Machines::SyncMachineModel GetMachineModel(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  std::vector<std::complex<double> > ComplexMatrixTimesVector(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  std::vector<std::complex<double> > vector);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">void</span> GetLUDecomposition(std::vector<std::vector<std::complex<double> > > matrix,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  std::vector<std::vector<std::complex<double> > >& matrixL,</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  std::vector<std::vector<std::complex<double> > >& matrixU);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  std::vector<std::complex<double> > LUEvaluate(std::vector<std::vector<std::complex<double> > > u,</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  std::vector<std::vector<std::complex<double> > > l,</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  std::vector<std::complex<double> > b);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24"> 145</a></span>  <span class="keyword">const</span> std::vector<Bus*> <a class="code" href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24">GetBusList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_busList; }</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a4ddabc6210146ae1ccae5f6911095bfd"> 150</a></span>  <span class="keyword">const</span> std::vector<Capacitor*> <a class="code" href="class_electric_calculation.html#a4ddabc6210146ae1ccae5f6911095bfd">GetCapacitorList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_capacitorList; }</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a906ce639a5d6c5d7946fe8824f1b4f1b"> 155</a></span>  <span class="keyword">const</span> std::vector<IndMotor*> <a class="code" href="class_electric_calculation.html#a906ce639a5d6c5d7946fe8824f1b4f1b">GetIndMotorList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_indMotorList; }</div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a8709a452d684d4224d32591c281ae0ed"> 160</a></span>  <span class="keyword">const</span> std::vector<Inductor*> <a class="code" href="class_electric_calculation.html#a8709a452d684d4224d32591c281ae0ed">GetInductorList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_inductorList; }</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48"> 165</a></span>  <span class="keyword">const</span> std::vector<Line*> <a class="code" href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48">GetLineList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_lineList; }</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#aa5e278a1c5ba1b6159c21ae2ff2b23b4"> 170</a></span>  <span class="keyword">const</span> std::vector<Load*> <a class="code" href="class_electric_calculation.html#aa5e278a1c5ba1b6159c21ae2ff2b23b4">GetLoadList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_loadList; }</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840"> 175</a></span>  <span class="keyword">const</span> std::vector<SyncGenerator*> <a class="code" href="class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840">GetSyncGeneratorList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_syncGeneratorList; }</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#ae9b5e9b51615141e88de0a0f99a7741e"> 180</a></span>  <span class="keyword">const</span> std::vector<SyncMotor*> <a class="code" href="class_electric_calculation.html#ae9b5e9b51615141e88de0a0f99a7741e">GetSyncMotorList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_syncMotorList; }</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e"> 185</a></span>  <span class="keyword">const</span> std::vector<Transformer*> <a class="code" href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e">GetTransformerList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_transformerList; }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  std::vector<PowerElement*> m_powerElementList;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  std::vector<Bus*> m_busList;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  std::vector<Capacitor*> m_capacitorList;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  std::vector<IndMotor*> m_indMotorList;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  std::vector<Inductor*> m_inductorList;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  std::vector<Line*> m_lineList;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  std::vector<Load*> m_loadList;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  std::vector<SyncGenerator*> m_syncGeneratorList;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  std::vector<SyncMotor*> m_syncMotorList;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  std::vector<Transformer*> m_transformerList;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> };</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor">#endif // ELECTRICCALCULATION_H</span></div><div class="ttc" id="class_electric_calculation_html_a3b89149e5fb56253c0629c9d260b3b7e"><div class="ttname"><a href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e">ElectricCalculation::GetTransformerList</a></div><div class="ttdeci">const std::vector< Transformer * > GetTransformerList() const</div><div class="ttdoc">Get the transformers of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00185">ElectricCalculation.h:185</a></div></div> +<div class="ttc" id="_properties_data_8h_html"><div class="ttname"><a href="_properties_data_8h.html">PropertiesData.h</a></div></div> +<div class="ttc" id="_transformer_8h_html"><div class="ttname"><a href="_transformer_8h.html">Transformer.h</a></div></div> <div class="ttc" id="class_electric_calculation_html_a906ce639a5d6c5d7946fe8824f1b4f1b"><div class="ttname"><a href="class_electric_calculation.html#a906ce639a5d6c5d7946fe8824f1b4f1b">ElectricCalculation::GetIndMotorList</a></div><div class="ttdeci">const std::vector< IndMotor * > GetIndMotorList() const</div><div class="ttdoc">Get the induction motors of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00155">ElectricCalculation.h:155</a></div></div> +<div class="ttc" id="_sync_generator_8h_html"><div class="ttname"><a href="_sync_generator_8h.html">SyncGenerator.h</a></div></div> <div class="ttc" id="struct_reactive_limits_html"><div class="ttname"><a href="struct_reactive_limits.html">ReactiveLimits</a></div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00051">ElectricCalculation.h:51</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="class_electric_calculation_html_aca3381e8f6663394e4d257a54e4e2a24"><div class="ttname"><a href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24">ElectricCalculation::GetBusList</a></div><div class="ttdeci">const std::vector< Bus * > GetBusList() const</div><div class="ttdoc">Get the buses of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00145">ElectricCalculation.h:145</a></div></div> <div class="ttc" id="class_electric_calculation_html_ad8719b10c3c4b85b316d3daa71064840"><div class="ttname"><a href="class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840">ElectricCalculation::GetSyncGeneratorList</a></div><div class="ttdeci">const std::vector< SyncGenerator * > GetSyncGeneratorList() const</div><div class="ttdoc">Get the synchronous generators of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00175">ElectricCalculation.h:175</a></div></div> +<div class="ttc" id="_sync_motor_8h_html"><div class="ttname"><a href="_sync_motor_8h.html">SyncMotor.h</a></div></div> <div class="ttc" id="class_electric_calculation_html_a8709a452d684d4224d32591c281ae0ed"><div class="ttname"><a href="class_electric_calculation.html#a8709a452d684d4224d32591c281ae0ed">ElectricCalculation::GetInductorList</a></div><div class="ttdeci">const std::vector< Inductor * > GetInductorList() const</div><div class="ttdoc">Get the inductors of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00160">ElectricCalculation.h:160</a></div></div> -<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div><div class="ttdoc">Class to manage color of OpenGL. </div></div> +<div class="ttc" id="_bus_8h_html"><div class="ttname"><a href="_bus_8h.html">Bus.h</a></div></div> +<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div></div> +<div class="ttc" id="_line_8h_html"><div class="ttname"><a href="_line_8h.html">Line.h</a></div></div> +<div class="ttc" id="_load_8h_html"><div class="ttname"><a href="_load_8h.html">Load.h</a></div></div> <div class="ttc" id="class_electric_calculation_html_a4ddabc6210146ae1ccae5f6911095bfd"><div class="ttname"><a href="class_electric_calculation.html#a4ddabc6210146ae1ccae5f6911095bfd">ElectricCalculation::GetCapacitorList</a></div><div class="ttdeci">const std::vector< Capacitor * > GetCapacitorList() const</div><div class="ttdoc">Get the capacitors of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00150">ElectricCalculation.h:150</a></div></div> +<div class="ttc" id="_ind_motor_8h_html"><div class="ttname"><a href="_ind_motor_8h.html">IndMotor.h</a></div></div> <div class="ttc" id="class_electric_calculation_html_aa5e278a1c5ba1b6159c21ae2ff2b23b4"><div class="ttname"><a href="class_electric_calculation.html#aa5e278a1c5ba1b6159c21ae2ff2b23b4">ElectricCalculation::GetLoadList</a></div><div class="ttdeci">const std::vector< Load * > GetLoadList() const</div><div class="ttdoc">Get the loads of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00170">ElectricCalculation.h:170</a></div></div> -<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div><div class="ttdoc">Switching data of power elements. </div></div> +<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div></div> +<div class="ttc" id="_inductor_8h_html"><div class="ttname"><a href="_inductor_8h.html">Inductor.h</a></div></div> <div class="ttc" id="class_electric_calculation_html_ae9b5e9b51615141e88de0a0f99a7741e"><div class="ttname"><a href="class_electric_calculation.html#ae9b5e9b51615141e88de0a0f99a7741e">ElectricCalculation::GetSyncMotorList</a></div><div class="ttdeci">const std::vector< SyncMotor * > GetSyncMotorList() const</div><div class="ttdoc">Get the synchronous motors of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00180">ElectricCalculation.h:180</a></div></div> -<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> +<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> +<div class="ttc" id="_capacitor_8h_html"><div class="ttname"><a href="_capacitor_8h.html">Capacitor.h</a></div></div> <div class="ttc" id="class_electric_calculation_html_af8eff271de83898c536deda1aab22d48"><div class="ttname"><a href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48">ElectricCalculation::GetLineList</a></div><div class="ttdeci">const std::vector< Line * > GetLineList() const</div><div class="ttdoc">Get the lines of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00165">ElectricCalculation.h:165</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_electromechanical_8cpp_source.html b/docs/doxygen/html/_electromechanical_8cpp_source.html index ad6d4e0..951a8d7 100644 --- a/docs/doxygen/html/_electromechanical_8cpp_source.html +++ b/docs/doxygen/html/_electromechanical_8cpp_source.html @@ -91,31 +91,31 @@ $(document).ready(function(){initNavTree('_electromechanical_8cpp_source.html',' <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_electromechanical_8h.html">Electromechanical.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_control_element_solver_8h.html">ControlElementSolver.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Electromechanical::Electromechanical(wxWindow* parent, std::vector<Element*> elementList, <a class="code" href="struct_simulation_data.html">SimulationData</a> data)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_parent = parent;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <a class="code" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">GetElementsFromList</a>(elementList);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  SetEventTimeList();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="class_bus.html">Bus</a> dummyBus;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_powerSystemBase = dummyBus.GetValueFromUnit(data.basePower, data.basePowerUnit);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_systemFreq = data.stabilityFrequency;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_simTime = data.stabilitySimulationTime;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_timeStep = data.timeStep;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_tolerance = data.stabilityTolerance;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_maxIterations = data.stabilityMaxIterations;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_ctrlTimeStepMultiplier = 1.0 / <span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(data.controlTimeStepRatio);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_plotTime = data.plotTime;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_useCOI = data.useCOI;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> Electromechanical::~Electromechanical() {}</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keywordtype">bool</span> Electromechanical::RunStabilityCalculation()</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  wxProgressDialog pbd(_(<span class="stringliteral">"Running simulation"</span>), _(<span class="stringliteral">"Initializing..."</span>), 100, m_parent,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_CAN_ABORT | wxPD_SMOOTH);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  SetSyncMachinesModel();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// Calculate the admittance matrix with the synchronous machines.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">GetYBus</a>(m_yBus, m_powerSystemBase, POSITIVE_SEQ, <span class="keyword">false</span>, <span class="keyword">true</span>)) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_errorMsg = _(<span class="stringliteral">"It was not possible to build the admittance matrix."</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  InsertSyncMachinesOnYBus();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  GetLUDecomposition(m_yBus, m_yBusL, m_yBusU);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// Get buses voltages.</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_vBus.clear();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_vBus.resize(m_busList.size());</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_busList.begin(), itEnd = m_busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_vBus[data.number] = data.voltage;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Calculate injected currents</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_iBus = ComplexMatrixTimesVector(m_yBus, m_vBus);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_iBus.size(); ++i) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(std::abs(m_iBus[i]) < 1e-5) m_iBus[i] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(!InitializeDynamicElements()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">double</span> pbdTime = m_plotTime;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">double</span> currentTime = 0.0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">double</span> currentPlotTime = 0.0;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">double</span> currentPbdTime = 0.0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">while</span>(currentTime < m_simTime) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span>(HasEvent(currentTime)) {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  SetEvent(currentTime);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  GetLUDecomposition(m_yBus, m_yBusL, m_yBusU);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span>(currentPlotTime >= m_plotTime || currentTime == 0.0) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_timeVector.push_back(currentTime);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  SaveData();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  currentPlotTime = 0.0;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span>(currentPbdTime > pbdTime) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span>(!pbd.Update((currentTime / m_simTime) * 100, wxString::Format(<span class="stringliteral">"Time = %.2fs"</span>, currentTime))) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_errorMsg = wxString::Format(_(<span class="stringliteral">"Simulation cancelled at %.2fs."</span>), currentTime);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  pbd.Update(100);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  currentPbdTime = 0.0;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span>(!SolveSynchronousMachines()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  currentTime += m_timeStep;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  currentPlotTime += m_timeStep;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  currentPbdTime += m_timeStep;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keywordtype">void</span> Electromechanical::SetEventTimeList()</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_busList.begin(), itEnd = m_busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span>(data.stabHasFault) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_eventTimeList.push_back(data.stabFaultTime);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_eventOccurrenceList.push_back(<span class="keyword">false</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_eventTimeList.push_back(data.stabFaultTime + data.stabFaultLength);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_eventOccurrenceList.push_back(<span class="keyword">false</span>);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// Switching</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_powerElementList.begin(), itEnd = m_powerElementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="class_power_element.html">PowerElement</a>* element = *it;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData = element-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.size(); ++i) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_eventTimeList.push_back(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[i]);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_eventOccurrenceList.push_back(<span class="keyword">false</span>);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keywordtype">bool</span> Electromechanical::HasEvent(<span class="keywordtype">double</span> currentTime)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_eventTimeList.size(); ++i) {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span>(!m_eventOccurrenceList[i]) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span>(EventTrigger(m_eventTimeList[i], currentTime)) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_eventOccurrenceList[i] = <span class="keyword">true</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="keywordtype">void</span> Electromechanical::SetEvent(<span class="keywordtype">double</span> currentTime)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_busList.begin(), itEnd = m_busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span>(data.stabHasFault) {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordtype">int</span> n = data.number;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// Insert fault</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span>(EventTrigger(data.stabFaultTime, currentTime)) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordtype">double</span> r, x;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  r = data.stabFaultResistance;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  x = data.stabFaultReactance;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">if</span>(x < 1e-5) x = 1e-5;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  m_yBus[n][n] += std::complex<double>(1.0, 0.0) / std::complex<double>(r, x);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// Remove fault</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(EventTrigger(data.stabFaultTime + data.stabFaultLength, currentTime)) {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">double</span> r, x;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  r = data.stabFaultResistance;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  x = data.stabFaultReactance;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(x < 1e-5) x = 1e-5;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_yBus[n][n] -= std::complex<double>(1.0, 0.0) / std::complex<double>(r, x);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// SyncGenerator switching</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator = *it;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">auto</span> swData = generator-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); ++i) {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span>(EventTrigger(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[i], currentTime)) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// Remove machine (only connected machines)</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</a> && generator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  generator-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(generator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  m_yBus[n][n] -= GetSyncMachineAdmittance(generator);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// Insert machine (only disconnected machines)</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a> && !generator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>() && generator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size() == 1) {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(generator-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">true</span>)) {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(generator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  m_yBus[n][n] += GetSyncMachineAdmittance(generator);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// Load switching</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_loadList.begin(), itEnd = m_loadList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="class_load.html">Load</a>* load = *it;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">auto</span> swData = load-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); ++i) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span>(EventTrigger(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[i], currentTime)) {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// Remove load (only connected loads)</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</a> && load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  load-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">auto</span> data = load->GetPUElectricalData(m_powerSystemBase);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="class_bus.html">Bus</a>* parentBus = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(load-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">int</span> n = parentBus->GetElectricalData().number;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  std::complex<double> v = parentBus->GetElectricalData().voltage;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  m_yBus[n][n] -= std::complex<double>(data.activePower, -data.reactivePower) / (v * v);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// Insert load (only disconnected load)</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a> && !load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>() && load-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size() == 1) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span>(load-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">true</span>)) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keyword">auto</span> data = load->GetPUElectricalData(m_powerSystemBase);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="class_bus.html">Bus</a>* parentBus = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(load-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordtype">int</span> n = parentBus->GetElectricalData().number;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  std::complex<double> v = parentBus->GetElectricalData().voltage;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  m_yBus[n][n] += std::complex<double>(data.activePower, -data.reactivePower) / (v * v);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="comment">// Line switching</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_lineList.begin(), itEnd = m_lineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keyword">auto</span> swData = line-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); ++i) {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span>(EventTrigger(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[i], currentTime)) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="comment">// Remove line (only connected lines)</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</a> && line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  line-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keyword">auto</span> data = line->GetElectricalData();</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordtype">int</span> n1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordtype">int</span> n2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().number;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  m_yBus[n1][n2] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  m_yBus[n2][n1] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  m_yBus[n1][n1] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_yBus[n2][n2] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_yBus[n1][n1] -= std::complex<double>(0.0, data.capSusceptance / 2.0);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_yBus[n2][n2] -= std::complex<double>(0.0, data.capSusceptance / 2.0);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="comment">// Insert line (only disconnected lines)</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a> && !line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>() && line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size() == 2) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">if</span>(line-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">true</span>)) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keyword">auto</span> data = line->GetElectricalData();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">int</span> n1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordtype">int</span> n2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().number;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  m_yBus[n1][n2] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  m_yBus[n2][n1] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  m_yBus[n1][n1] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  m_yBus[n2][n2] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  m_yBus[n1][n1] += std::complex<double>(0.0, data.capSusceptance / 2.0);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  m_yBus[n2][n2] += std::complex<double>(0.0, data.capSusceptance / 2.0);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// Transformer switching</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_transformerList.begin(), itEnd = m_transformerList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">auto</span> swData = transformer-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); ++i) {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span>(EventTrigger(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[i], currentTime)) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// Remove transformer (only connected transformers)</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</a> && transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  transformer-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keyword">auto</span> data = transformer->GetElectricalData();</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordtype">int</span> n1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordtype">int</span> n2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().number;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">if</span>(data.turnsRatio == 1.0 && data.phaseShift == 0.0) {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  m_yBus[n1][n2] -= -1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  m_yBus[n2][n1] -= -1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  m_yBus[n1][n1] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  m_yBus[n2][n2] -= 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="comment">// Complex turns ratio</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordtype">double</span> radPhaseShift = wxDegToRad(data.phaseShift);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  std::complex<double> a = std::complex<double>(data.turnsRatio * std::cos(radPhaseShift),</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  -data.turnsRatio * std::sin(radPhaseShift));</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="comment">// Transformer admitance</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  std::complex<double> y = 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  m_yBus[n1][n1] -= y / std::pow(std::abs(a), 2.0);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  m_yBus[n1][n2] -= -(y / std::conj(a));</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  m_yBus[n2][n1] -= -(y / a);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  m_yBus[n2][n2] -= y;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="comment">// Insert transformer (only disconnected transformers)</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a> && !transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>() &&</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size() == 2) {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">if</span>(transformer-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">true</span>)) {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keyword">auto</span> data = transformer->GetElectricalData();</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordtype">int</span> n1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordtype">int</span> n2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(transformer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData().number;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">if</span>(data.turnsRatio == 1.0 && data.phaseShift == 0.0) {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  m_yBus[n1][n2] += -1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  m_yBus[n2][n1] += -1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  m_yBus[n1][n1] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  m_yBus[n2][n2] += 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="comment">// Complex turns ratio</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordtype">double</span> radPhaseShift = wxDegToRad(data.phaseShift);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  std::complex<double> a = std::complex<double>(data.turnsRatio * std::cos(radPhaseShift),</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  -data.turnsRatio * std::sin(radPhaseShift));</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="comment">// Transformer admitance</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  std::complex<double> y = 1.0 / std::complex<double>(data.resistance, data.indReactance);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  m_yBus[n1][n1] += y / std::pow(std::abs(a), 2.0);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  m_yBus[n1][n2] += -(y / std::conj(a));</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  m_yBus[n2][n1] += -(y / a);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  m_yBus[n2][n2] += y;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="comment">// Capacitor switching</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_capacitorList.begin(), itEnd = m_capacitorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = *it;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keyword">auto</span> swData = capacitor-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); ++i) {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">if</span>(EventTrigger(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[i], currentTime)) {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="comment">// Remove capacitor (only connected capacitors)</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</a> && capacitor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  capacitor-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keyword">auto</span> data = capacitor->GetPUElectricalData(m_powerSystemBase);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(capacitor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  m_yBus[n][n] -= std::complex<double>(0.0, data.reactivePower);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="comment">// Insert capacitor (only disconnected capacitors)</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a> && !capacitor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>() && capacitor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size() == 1) {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">if</span>(capacitor-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">true</span>)) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keyword">auto</span> data = capacitor->GetPUElectricalData(m_powerSystemBase);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(capacitor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  m_yBus[n][n] += std::complex<double>(0.0, data.reactivePower);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="comment">// Inductor switching</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_inductorList.begin(), itEnd = m_inductorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = *it;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keyword">auto</span> swData = inductor-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); ++i) {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">if</span>(EventTrigger(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[i], currentTime)) {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="comment">// Remove inductor (only connected inductors)</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</a> && inductor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  inductor-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keyword">auto</span> data = inductor->GetPUElectricalData(m_powerSystemBase);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(inductor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  m_yBus[n][n] -= std::complex<double>(0.0, -data.reactivePower);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="comment">// Insert inductor (only disconnected inductors)</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[i] == <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a> && !inductor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>() && inductor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size() == 1) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span>(inductor-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(<span class="keyword">true</span>)) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keyword">auto</span> data = inductor->GetPUElectricalData(m_powerSystemBase);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(inductor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  m_yBus[n][n] += std::complex<double>(0.0, -data.reactivePower);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  }</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  }</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="keywordtype">void</span> Electromechanical::InsertSyncMachinesOnYBus()</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator = *it;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">if</span>(generator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keyword">auto</span> data = generator->GetElectricalData();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(generator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  m_yBus[n][n] += GetSyncMachineAdmittance(generator);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> }</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> </div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="keywordtype">bool</span> Electromechanical::EventTrigger(<span class="keywordtype">double</span> eventTime, <span class="keywordtype">double</span> currentTime)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">return</span> (((eventTime - m_timeStep) < currentTime) && (eventTime >= currentTime));</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> </div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> std::complex<double> Electromechanical::GetSyncMachineAdmittance(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keyword">auto</span> data = generator->GetElectricalData();</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordtype">double</span> k = 1.0; <span class="comment">// Power base change factor.</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordtype">double</span> oldBase = generator->GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  k = m_powerSystemBase / oldBase;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordtype">double</span> ra = data.armResistance * k;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keyword">auto</span> smModelData = GetSyncMachineModelData(generator);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordtype">double</span> xd = smModelData.xd;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordtype">double</span> xq = smModelData.xq;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordtype">double</span> xdq = 0.5 * (xd + xq);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">return</span> (std::complex<double>(ra, -xdq) / std::complex<double>(ra * ra + xd * xq, 0.0));</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="keywordtype">bool</span> Electromechanical::InitializeDynamicElements()</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span> {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="comment">// Buses</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_busList.begin(), itEnd = m_busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  data.stabVoltageVector.clear();</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="comment">// Synchronous generators</span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keyword">auto</span> dataPU = syncGenerator->GetPUElectricalData(m_powerSystemBase);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordtype">double</span> k = 1.0; <span class="comment">// Power base change factor.</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordtype">double</span> oldBase = syncGenerator->GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  k = m_powerSystemBase / oldBase;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  data.terminalVoltage = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  std::complex<double> conjS(dataPU.activePower, -dataPU.reactivePower);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  std::complex<double> vt = data.terminalVoltage;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  std::complex<double> ia = conjS / std::conj(vt);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordtype">double</span> xd = data.syncXd * k;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordtype">double</span> xq = data.syncXq * k;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordtype">double</span> ra = data.armResistance * k;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> </div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">if</span>(data.model == Machines::SM_MODEL_1) {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  xq = data.transXd * k;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  xd = xq;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(data.syncXq == 0.0)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  xq = data.syncXd * k;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> </div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordtype">double</span> sd = 1.0;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordtype">double</span> sq = 1.0;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordtype">double</span> satF = 1.0;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordtype">double</span> xp = data.potierReactance * k;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordtype">bool</span> hasSaturation = <span class="keyword">false</span>;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">if</span>(data.satFactor != 0.0) { <span class="comment">// Have saturation.</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  satF = (data.satFactor - 1.2) / std::pow(1.2, 7);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">if</span>(xp == 0.0) xp = 0.8 * (data.transXd * k);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  hasSaturation = <span class="keyword">true</span>;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="comment">// Initialize state variables</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  std::complex<double> eq0 = vt + std::complex<double>(ra, xq) * ia;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordtype">double</span> delta = std::arg(eq0);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordtype">double</span> id0, iq0, vd0, vq0;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  ABCtoDQ0(ia, delta, id0, iq0);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  ABCtoDQ0(vt, delta, vd0, vq0);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span> </div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="comment">// Initialize saturation</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordtype">double</span> xqs = xq;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordtype">double</span> xds = xd;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">if</span>(hasSaturation) {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordtype">double</span> oldDelta = 0;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordtype">bool</span> exit = <span class="keyword">false</span>;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordtype">int</span> numIt = 0;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">while</span>(!exit) {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  oldDelta = delta;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  ABCtoDQ0(ia, delta, id0, iq0);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  ABCtoDQ0(vt, delta, vd0, vq0);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="comment">// Direct-axis Potier voltage.</span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordtype">double</span> epd = vd0 + ra * id0 + xp * iq0;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span> </div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  sq = 1.0 + satF * (xq / xd) * std::pow(epd, 6);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  xqs = (xq - xp) / sq + xp;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  eq0 = data.terminalVoltage + std::complex<double>(ra, xqs) * ia;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  delta = std::arg(eq0);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">if</span>(std::abs(delta - oldDelta) < m_saturationTolerance) {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  exit = <span class="keyword">true</span>;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(numIt >= m_maxIterations) {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  m_errorMsg = _(<span class="stringliteral">"Error on initializate the saturation values of \""</span>) + data.name + _(<span class="stringliteral">"\"."</span>);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  }</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  numIt++;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="comment">// Quadrature-axis Potier voltage.</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordtype">double</span> epq = vq0 + ra * iq0 - xp * id0;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  sd = 1.0 + satF * std::pow(epq, 6);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  xds = (xd - xp) / sd + xp;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="comment">/*CalculateSyncMachineSaturation(syncGenerator, id0, iq0, sq, sd, true, k);</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="comment"> xqs = (xq - xp) / sq + xp;</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="comment"> xds = (xd - xp) / sd + xp;</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="comment"> eq0 = data.terminalVoltage + std::complex<double>(ra, xqs) * ia;</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="comment"> delta = std::arg(eq0);*/</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordtype">double</span> ef0 = vq0 + ra * iq0 - xds * id0;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span> </div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  data.initialFieldVoltage = ef0 * sd;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  data.fieldVoltage = data.initialFieldVoltage;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  data.pm = std::real((data.terminalVoltage * std::conj(ia)) + (std::abs(ia) * std::abs(ia) * ra));</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  data.speed = 2.0 * M_PI * m_systemFreq;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  data.delta = delta;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  data.pe = data.pm;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  data.electricalPower = std::complex<double>(dataPU.activePower, dataPU.reactivePower);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  data.sd = sd;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  data.sq = sq;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  data.id = id0;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  data.iq = iq0;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> </div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="comment">// Variables to extrapolate.</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  data.oldIq = iq0;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  data.oldId = id0;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  data.oldPe = data.pe;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  data.oldSd = sd;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  data.oldSq = sq;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  m_sdC = sd;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  m_sqC = sq;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">switch</span>(data.model) {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_1: {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="comment">// double tranXd = data.transXd * k;</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> </div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="comment">// data.tranEq = data.initialFieldVoltage + (xd - tranXd) * id0;</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  data.tranEq = std::abs(eq0);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  data.tranEd = 0.0;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  data.subEq = 0.0;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  data.subEd = 0.0;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_2: {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordtype">double</span> tranXd = data.transXd * k;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span> </div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  data.tranEq = ef0 + (xd - tranXd) * (id0 / sd);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  data.tranEd = 0.0;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  data.subEd = 0.0;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  data.subEq = 0.0;</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_3: {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordtype">double</span> tranXd = data.transXd * k;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordtype">double</span> tranXq = data.transXq * k;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">if</span>(tranXq == 0.0) tranXq = tranXd;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> </div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  data.tranEq = ef0 + (xd - tranXd) * (id0 / sd);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  data.tranEd = -(xq - tranXq) * (iq0 / sq);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> </div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  data.subEd = 0.0;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  data.subEq = 0.0;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_4: {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordtype">double</span> tranXd = data.transXd * k;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordtype">double</span> subXd = data.subXd * k;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordtype">double</span> subXq = data.subXq * k;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">if</span>(subXd == 0.0) subXd = subXq;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordflow">if</span>(subXq == 0.0) subXq = subXd;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  data.tranEq = ef0 + (xd - tranXd) * (id0 / sd);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  data.tranEd = 0.0;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  data.subEq = data.tranEq + (tranXd - subXd) * (id0 / sd);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  data.subEd = -(xq - subXq) * (iq0 / sq);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_5: {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordtype">double</span> tranXd = data.transXd * k;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  <span class="keywordtype">double</span> tranXq = data.transXq * k;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordtype">double</span> subXd = data.subXd * k;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordtype">double</span> subXq = data.subXq * k;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">if</span>(subXd == 0.0) subXd = subXq;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keywordflow">if</span>(subXq == 0.0) subXq = subXd;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  data.tranEq = ef0 + (xd - tranXd) * (id0 / sd);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  data.tranEd = -(xq - tranXq) * (iq0 / sq);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  data.subEq = data.tranEq + (tranXd - subXd) * (id0 / sd);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  data.subEd = data.tranEd - (tranXq - subXq) * (iq0 / sq);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  }</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> </div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="comment">// Initialize controllers</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">if</span>(data.useAVR) {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keywordflow">if</span>(data.avrSolver) <span class="keyword">delete</span> data.avrSolver;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  data.avrSolver = <span class="keyword">new</span> <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>(data.avr, m_timeStep * m_ctrlTimeStepMultiplier, m_tolerance,</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keyword">false</span>, std::abs(data.terminalVoltage), m_parent);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">if</span>(!data.avrSolver->IsOK()) {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  m_errorMsg = _(<span class="stringliteral">"Error on initializate the AVR of \""</span>) + data.name + _(<span class="stringliteral">"\"."</span>);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  }</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  }</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">if</span>(data.useSpeedGovernor) {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">if</span>(data.speedGovSolver) <span class="keyword">delete</span> data.speedGovSolver;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  data.speedGovSolver = <span class="keyword">new</span> <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>(data.speedGov, m_timeStep * m_ctrlTimeStepMultiplier,</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  m_tolerance, <span class="keyword">false</span>, data.speed, m_parent);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">if</span>(!data.speedGovSolver->IsOK()) {</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  m_errorMsg = _(<span class="stringliteral">"Error on initializate the speed governor of \""</span>) + data.name + _(<span class="stringliteral">"\"."</span>);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  }</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  }</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="comment">// Initialize open circuit machine.</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  }</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="comment">// Reset plot data</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  data.terminalVoltageVector.clear();</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  data.electricalPowerVector.clear();</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  data.mechanicalPowerVector.clear();</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  data.freqVector.clear();</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  data.fieldVoltageVector.clear();</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  data.deltaVector.clear();</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> </div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  }</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  CalculateReferenceSpeed();</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> }</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="keywordtype">bool</span> Electromechanical::CalculateMachinesCurrents()</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="comment">// Reset injected currents vector</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_iBus.size(); ++i) m_iBus[i] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> </div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keywordtype">double</span> k = 1.0; <span class="comment">// Power base change factor.</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keywordtype">double</span> oldBase = syncGenerator->GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  k = m_powerSystemBase / oldBase;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  }</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> </div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordtype">double</span> ra = data.armResistance * k;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordtype">double</span> xp = data.potierReactance * k;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">if</span>(xp == 0.0) xp = 0.8 * data.transXd * k;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> </div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  std::complex<double> e = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  std::complex<double> v = m_vBus[n];</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  std::complex<double> iInj = m_iBus[n];</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> </div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keyword">auto</span> smModelData = GetSyncMachineModelData(syncGenerator);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  DQ0toABC(smModelData.ed, smModelData.eq, data.delta, e);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keywordtype">double</span> xd = smModelData.xd;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordtype">double</span> xq = smModelData.xq;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> </div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordtype">double</span> sd = data.sd;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordtype">double</span> sq = data.sq;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordtype">double</span> id, iq;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="comment">// Calculate the saturation effect</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordflow">if</span>(data.satFactor != 0.0) {</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">if</span>(!CalculateSyncMachineSaturation(syncGenerator, <span class="keywordtype">id</span>, iq, sd, sq, <span class="keyword">false</span>, k)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  }</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span> </div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keywordtype">double</span> xdq, xds, xqs, xdqs;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  xdq = 0.5 * (xd + xq);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  xds = (xd - xp) / sd + xp;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  xqs = (xq - xp) / sq + xp;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  xdqs = 0.5 * (xds + xqs);</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span> </div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  std::complex<double> y0 = std::complex<double>(ra, -xdq) / std::complex<double>(ra * ra + xd * xq, 0.0);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="comment">// std::complex<double> iUnadjusted = y0 * e;</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  std::complex<double> iUnadjusted = y0 * v;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="comment">// [Ref] Arrillaga, J.; Arnold, C. P.. "Computer Modelling of Electrical Power Systems". Pg. 225-226</span></div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="comment">// [Ref] Dommell, H. W.; Sato, N.. "Fast transient stability solutions". IEEE Transactions on Power</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="comment">// Apparatus and Systems, PAS-91 (4), 1643-1650</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  std::complex<double> iSaliency = std::complex<double>(0.0, -((0.5 * (xqs - xds)) / (ra * ra + xds * xqs))) *</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  (std::conj(e) - std::conj(v));</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  iSaliency = iSaliency * std::cos(2.0 * data.delta) +</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  iSaliency * std::complex<double>(0.0, std::sin(2.0 * data.delta));</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span> </div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <span class="comment">// [Ref] Arrillaga, J.; Arnold, C. P.; Computer Modelling of Electrical Power Systems. Pg. 258-259</span></div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  std::complex<double> y0s = std::complex<double>(ra, -xdqs) / std::complex<double>(ra * ra + xds * xqs, 0.0);</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  std::complex<double> iSaturation = y0s * (e - v);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span> </div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  iInj = iUnadjusted + iSaliency + iSaturation;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span> </div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  m_iBus[n] += iInj;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> </div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="comment">// Remove the current flowing through y0 (i.e. iUnadjusted in this case, y0 is inserted in admittance</span></div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="comment">// matrix) to calculate the electrical power.</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  std::complex<double> iMachine = iInj - iUnadjusted;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  data.electricalPower = v * std::conj(iMachine);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> </div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  ABCtoDQ0(iMachine, data.delta, <span class="keywordtype">id</span>, iq);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span> </div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  data.id = id;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  data.iq = iq;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  data.sd = sd;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  data.sq = sq;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  data.electricalPower = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  }</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span> </div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  }</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> }</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span> </div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="keywordtype">void</span> Electromechanical::CalculateIntegrationConstants(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator, <span class="keywordtype">double</span> <span class="keywordtype">id</span>, <span class="keywordtype">double</span> iq, <span class="keywordtype">double</span> k)</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span> {</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  CalculateReferenceSpeed();</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span> </div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  <span class="keywordtype">double</span> syncXd, syncXq, transXd, transXq, subXd, subXq;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  syncXd = data.syncXd * k;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  syncXq = data.syncXq * k;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  transXd = data.transXd * k;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  transXq = data.transXq * k;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  subXd = data.subXd * k;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  subXq = data.subXq * k;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> </div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordflow">if</span>(syncXq == 0.0) syncXq = syncXd;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <span class="keywordflow">if</span>(transXq == 0.0) transXq = transXd;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">if</span>(subXd == 0.0) subXd = subXq;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">if</span>(subXq == 0.0) subXq = subXd;</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span> </div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keywordtype">double</span> transTd0, transTq0, subTd0, subTq0;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  transTd0 = data.transTd0;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  transTq0 = data.transTq0;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  subTd0 = data.subTd0;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  subTq0 = data.subTq0;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="keywordflow">if</span>(subTd0 == 0.0) subTd0 = subTq0;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">if</span>(subTq0 == 0.0) subTq0 = subTd0;</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span> </div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="comment">// Speed</span></div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  data.icSpeed.m = m_timeStep / ((4.0f * data.inertia / m_refSpeed) / k + m_timeStep * data.damping * k);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  data.icSpeed.c = (1.0f - 2.0f * data.icSpeed.m * data.damping * k) * data.speed +</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  data.icSpeed.m * (data.pm - data.pe + 2.0f * m_refSpeed * data.damping * k);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span> </div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="comment">// Delta</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  data.icDelta.m = 0.5f * m_timeStep;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  data.icDelta.c = data.delta + data.icDelta.m * (data.speed - 2.0f * m_refSpeed);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> </div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="comment">// Eq'</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordflow">if</span>(data.model == Machines::SM_MODEL_2 || data.model == Machines::SM_MODEL_3 || data.model == Machines::SM_MODEL_4 ||</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  data.model == Machines::SM_MODEL_5) {</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  data.icTranEq.m = m_timeStep / (2.0f * transTd0 + m_timeStep);</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <span class="comment">// data.icTranEq.c = (1.0f - 2.0 * data.icTranEq.m) * data.tranEq +</span></div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="comment">// data.icTranEq.m * (data.fieldVoltage + (syncXd - transXd) * id);</span></div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  data.icTranEq.c = (1.0 - data.icTranEq.m * (1.0 + data.sd)) * data.tranEq +</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  data.icTranEq.m * (data.fieldVoltage + (syncXd - transXd) * <span class="keywordtype">id</span>);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  }</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span> </div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="comment">// Ed'</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">if</span>(data.model == Machines::SM_MODEL_3 || data.model == Machines::SM_MODEL_4 || data.model == Machines::SM_MODEL_5) {</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  data.icTranEd.m = m_timeStep / (2.0f * transTq0 + m_timeStep);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="comment">// data.icTranEd.c = (1.0f - 2.0f * data.icTranEd.m) * data.tranEd - data.icTranEd.m * (syncXq - transXq) * iq;</span></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  data.icTranEd.c =</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  (1.0 - data.icTranEd.m * (1.0 + data.sq)) * data.tranEd - data.icTranEd.m * (syncXq - transXq) * iq;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  }</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> </div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="comment">// Eq''</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="keywordflow">if</span>(data.model == Machines::SM_MODEL_4 || data.model == Machines::SM_MODEL_5) {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  data.icSubEq.m = m_timeStep / (2.0f * subTd0 + m_timeStep);</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="comment">// data.icSubEq.c =</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="comment">// (1.0f - 2.0f * data.icSubEq.m) * data.subEq + data.icSubEq.m * (data.tranEq + (transXd - subXd) * id);</span></div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  data.icSubEq.c = (1.0 - data.icSubEq.m * (1.0 + data.sd)) * data.subEq +</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  data.icSubEq.m * (data.sd * data.tranEq + (transXd - subXd) * <span class="keywordtype">id</span>);</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="comment">// Ed''</span></div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keywordflow">if</span>(data.model == Machines::SM_MODEL_4) {</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  data.icSubEd.m = m_timeStep / (2.0f * subTq0 + m_timeStep);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="comment">// data.icSubEd.c = (1.0f - 2.0f * data.icSubEd.m) * data.subEd - data.icSubEd.m * (syncXq - subXq) * iq;</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  data.icSubEd.c =</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  (1.0f - data.icSubEd.m * (1.0 + data.sq)) * data.subEd - data.icSubEd.m * (syncXq - subXq) * iq;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  }</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">if</span>(data.model == Machines::SM_MODEL_5) {</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  data.icSubEd.m = m_timeStep / (2.0f * subTq0 + m_timeStep);</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="comment">// data.icSubEd.c =</span></div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="comment">// (1.0f - 2.0f * data.icSubEd.m) * data.subEd + data.icSubEd.m * (data.tranEd - (transXq - subXq) * iq);</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  data.icSubEd.c = (1.0f - data.icSubEd.m * (1.0 + data.sq)) * data.subEd +</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  data.icSubEd.m * (data.sq * data.tranEd - (transXq - subXq) * iq);</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> </div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> }</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> </div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="keywordtype">bool</span> Electromechanical::SolveSynchronousMachines()</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> </div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keywordtype">double</span> id, iq, pe, sd, sq;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  pe = data.pe;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordtype">id</span> = data.id;</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  iq = data.iq;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  sd = data.sd;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  sq = data.sq;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span> </div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordtype">double</span> k = 1.0; <span class="comment">// Power base change factor.</span></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordtype">double</span> oldBase = syncGenerator->GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  k = m_powerSystemBase / oldBase;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  }</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span> </div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="comment">// Calculate integration constants.</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  CalculateIntegrationConstants(syncGenerator, <span class="keywordtype">id</span>, iq, k);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> </div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keywordflow">if</span>(!CalculateSyncMachineNonIntVariables(syncGenerator, <span class="keywordtype">id</span>, iq, sd, sq, pe, k)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="comment">// Extrapolate nonintegrable variables.</span></div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordtype">id</span> = 2.0 * <span class="keywordtype">id</span> - data.oldId;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  iq = 2.0 * iq - data.oldIq;</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  pe = 2.0 * pe - data.oldPe;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  sd = 2.0 * sd - data.oldSd;</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  sq = 2.0 * sq - data.oldSq;</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span> </div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  m_sdC = sd;</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  m_sqC = sq;</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> </div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  CalculateSyncMachineIntVariables(syncGenerator, <span class="keywordtype">id</span>, iq, sd, sq, pe, k);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  CalculateIntegrationConstants(syncGenerator, 0.0f, 0.0f);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  }</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  }</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> </div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  m_wError = 0;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span> </div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordtype">double</span> error = 1.0;</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordtype">int</span> iterations = 0;</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="keywordflow">while</span>(error > m_tolerance) {</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  error = 0.0;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> </div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="comment">// Calculate the injected currents.</span></div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="keywordflow">if</span>(!CalculateMachinesCurrents()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span> </div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="comment">// Calculate the buses voltages.</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  m_vBus = LUEvaluate(m_yBusU, m_yBusL, m_iBus);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span> </div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="comment">// Solve machine equations.</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> </div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span> </div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="keywordtype">double</span> <span class="keywordtype">id</span> = data.id;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="keywordtype">double</span> iq = data.iq;</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordtype">double</span> pe = data.pe;</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <span class="keywordtype">double</span> sd = data.sd;</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordtype">double</span> sq = data.sq;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> </div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="comment">// Power base change factor.</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="keywordtype">double</span> k = 1.0;</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keywordtype">double</span> oldBase = syncGenerator->GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  k = m_powerSystemBase / oldBase;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  }</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span> </div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="comment">// Calculate id, iq, dq, sd</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keywordflow">if</span>(!CalculateSyncMachineNonIntVariables(syncGenerator, <span class="keywordtype">id</span>, iq, sd, sq, pe, k)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> </div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordtype">double</span> genError = CalculateSyncMachineIntVariables(syncGenerator, <span class="keywordtype">id</span>, iq, sd, sq, pe, k);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span> </div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <span class="keywordflow">if</span>(genError > error) error = genError;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  }</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span> </div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  ++iterations;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span> </div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="keywordflow">if</span>(iterations > m_maxIterations) {</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  m_errorMsg = _(<span class="stringliteral">"Impossible to solve the synchronous generators.\nCheck the system parameters and/or "</span></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="stringliteral">"decrease the time step."</span>);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  }</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  }</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  m_numIt = iterations;</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span> </div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  <span class="comment">// Solve controllers.</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keywordtype">int</span> ctrlRatio = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(1 / m_ctrlTimeStepMultiplier);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">if</span>(data.useAVR && data.avrSolver) {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < ctrlRatio; ++i) data.avrSolver->SolveNextStep(std::abs(data.terminalVoltage));</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  data.fieldVoltage = data.initialFieldVoltage + data.avrSolver->GetLastSolution();</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  }</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span> </div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="keywordflow">if</span>(data.useSpeedGovernor && data.speedGovSolver) {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < ctrlRatio; ++i) data.speedGovSolver->SolveNextStep(data.speed);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  data.pm = data.speedGovSolver->GetLastSolution();</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  }</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  }</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span> </div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span> }</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span> </div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span> <span class="keywordtype">void</span> Electromechanical::SaveData()</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span> {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <span class="keywordflow">if</span>(data.plotSyncMachine) {</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  data.terminalVoltageVector.push_back(data.terminalVoltage);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  data.electricalPowerVector.push_back(data.electricalPower);</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  data.mechanicalPowerVector.push_back(data.pm);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  data.freqVector.push_back(data.speed / (2.0f * M_PI));</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  data.fieldVoltageVector.push_back(data.fieldVoltage);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  data.deltaVector.push_back(wxRadToDeg(data.delta));</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  }</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  }</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_busList.begin(), itEnd = m_busList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keywordflow">if</span>(data.plotBus) {</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  data.stabVoltageVector.push_back(m_vBus[data.number]);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  }</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  }</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> </div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  m_wErrorVector.push_back(m_wError);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  m_numItVector.push_back(m_numIt);</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  m_sdCVector.push_back(m_sdC);</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  m_sqCVector.push_back(m_sqC);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> }</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span> </div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="keywordtype">void</span> Electromechanical::SetSyncMachinesModel()</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span> {</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  data.model = GetMachineModel(syncGenerator);</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  }</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> }</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> </div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span> <span class="keywordtype">bool</span> Electromechanical::CalculateSyncMachineNonIntVariables(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator,</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordtype">double</span>& <span class="keywordtype">id</span>,</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="keywordtype">double</span>& iq,</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keywordtype">double</span>& sd,</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="keywordtype">double</span>& sq,</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <span class="keywordtype">double</span>& pe,</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordtype">double</span> k)</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> {</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span> </div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  data.terminalVoltage = m_vBus[n];</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  }</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span> </div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keywordtype">double</span> vd, vq;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  ABCtoDQ0(data.terminalVoltage, data.delta, vd, vq);</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span> </div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <span class="keywordflow">if</span>(data.satFactor != 0.0) {</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <span class="keywordflow">if</span>(!CalculateSyncMachineSaturation(syncGenerator, <span class="keywordtype">id</span>, iq, sd, sq, <span class="keyword">true</span>, k)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  data.sd = sd;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  data.sq = sq;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  data.oldSd = sd;</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  data.oldSq = sq;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  }</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span> </div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  pe = <span class="keywordtype">id</span> * vd + iq * vq + (<span class="keywordtype">id</span> * <span class="keywordtype">id</span> + iq * iq) * data.armResistance * k;</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  pe = <span class="keywordtype">id</span> = iq = 0.0f;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  }</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  data.pe = pe;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  data.id = id;</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  data.iq = iq;</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  data.oldPe = pe;</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  data.oldId = id;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  data.oldIq = iq;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span> </div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span> }</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span> </div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <span class="keywordtype">double</span> Electromechanical::CalculateSyncMachineIntVariables(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator,</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keywordtype">double</span> <span class="keywordtype">id</span>,</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  <span class="keywordtype">double</span> iq,</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <span class="keywordtype">double</span> sd,</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="keywordtype">double</span> sq,</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <span class="keywordtype">double</span> pe,</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  <span class="keywordtype">double</span> k)</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> {</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  <span class="keywordtype">double</span> error = 0.0;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> </div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  <span class="comment">// Mechanical differential equations.</span></div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordtype">double</span> w = data.icSpeed.c + data.icSpeed.m * (data.pm - pe);</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  error = std::max(error, std::abs(data.speed - w) / m_refSpeed);</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> </div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  m_wError += std::abs(data.speed - w) / m_refSpeed;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> </div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keywordtype">double</span> delta = data.icDelta.c + data.icDelta.m * w;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  error = std::max(error, std::abs(data.delta - delta));</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> </div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  data.speed = w;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  data.delta = delta;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> </div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="comment">// Electrical differential equations</span></div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <span class="keywordflow">switch</span>(data.model) {</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_1: {</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  <span class="comment">// There is no differential equations.</span></div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_2: {</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keywordtype">double</span> syncXd, transXd;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  syncXd = data.syncXd * k;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  transXd = data.transXd * k;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> </div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <span class="keywordtype">double</span> tranEq = (data.icTranEq.c + data.icTranEq.m * (data.fieldVoltage + (syncXd - transXd) * <span class="keywordtype">id</span>)) /</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  (1.0 + data.icTranEq.m * (sd - 1.0));</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  error = std::max(error, std::abs(data.tranEq - tranEq));</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> </div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  data.tranEq = tranEq;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_3: {</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="keywordtype">double</span> syncXd, syncXq, transXd, transXq;</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  syncXd = data.syncXd * k;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  syncXq = data.syncXq * k;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  transXd = data.transXd * k;</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  transXq = data.transXq * k;</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="keywordflow">if</span>(syncXq == 0.0) syncXq = syncXd;</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="keywordflow">if</span>(transXq == 0.0) transXq = transXd;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> </div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  <span class="keywordtype">double</span> tranEq = (data.icTranEq.c + data.icTranEq.m * (data.fieldVoltage + (syncXd - transXd) * <span class="keywordtype">id</span>)) /</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  (1.0 + data.icTranEq.m * (sd - 1.0));</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  error = std::max(error, std::abs(data.tranEq - tranEq));</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> </div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <span class="keywordtype">double</span> tranEd =</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  (data.icTranEd.c - data.icTranEd.m * (syncXq - transXq) * iq) / (1.0 + data.icTranEd.m * (sq - 1.0));</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  error = std::max(error, std::abs(data.tranEd - tranEd));</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> </div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  data.tranEq = tranEq;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  data.tranEd = tranEd;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> </div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <span class="keywordflow">if</span>(!syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  std::complex<double> e;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  DQ0toABC(data.tranEd, data.tranEq, data.delta, e);</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  data.terminalVoltage = e;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  }</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_4: {</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  <span class="keywordtype">double</span> syncXd, syncXq, transXd, subXd, subXq;</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  syncXd = data.syncXd * k;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  syncXq = data.syncXq * k;</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  transXd = data.transXd * k;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  subXd = data.subXd * k;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  subXq = data.subXq * k;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <span class="keywordflow">if</span>(syncXq == 0.0) syncXq = syncXd;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <span class="keywordflow">if</span>(subXd == 0.0) subXd = subXq;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">if</span>(subXq == 0.0) subXq = subXd;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> </div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordtype">double</span> tranEq = (data.icTranEq.c + data.icTranEq.m * (data.fieldVoltage + (syncXd - transXd) * <span class="keywordtype">id</span>)) /</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  (1.0 + data.icTranEq.m * (sd - 1.0));</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  error = std::max(error, std::abs(data.tranEq - tranEq));</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> </div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  <span class="keywordtype">double</span> subEq = (data.icSubEq.c + data.icSubEq.m * (sd * tranEq + (transXd - subXd) * <span class="keywordtype">id</span>)) /</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  (1.0 + data.icSubEq.m * (sd - 1.0));</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  error = std::max(error, std::abs(data.subEq - subEq));</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <span class="keywordtype">double</span> subEd =</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  (data.icSubEd.c - data.icSubEd.m * ((syncXq - subXq) * iq)) / (1.0 + data.icSubEd.m * (sq - 1.0));</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  error = std::max(error, std::abs(data.subEd - subEd));</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> </div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  data.tranEq = tranEq;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  data.subEq = subEq;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  data.subEd = subEd;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_5: {</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <span class="keywordtype">double</span> syncXd, syncXq, transXd, transXq, subXd, subXq;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  syncXd = data.syncXd * k;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  syncXq = data.syncXq * k;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  transXd = data.transXd * k;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  transXq = data.transXq * k;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  subXd = data.subXd * k;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  subXq = data.subXq * k;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <span class="keywordflow">if</span>(syncXq == 0.0) syncXq = syncXd;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">if</span>(transXq == 0.0) transXq = transXd;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordflow">if</span>(subXd == 0.0) subXd = subXq;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <span class="keywordflow">if</span>(subXq == 0.0) subXq = subXd;</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> </div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <span class="keywordtype">double</span> tranEq = (data.icTranEq.c + data.icTranEq.m * (data.fieldVoltage + (syncXd - transXd) * <span class="keywordtype">id</span>)) /</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  (1.0 + data.icTranEq.m * (sd - 1.0));</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  error = std::max(error, std::abs(data.tranEq - tranEq));</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <span class="keywordtype">double</span> tranEd =</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  (data.icTranEd.c - data.icTranEd.m * (syncXq - transXq) * iq) / (1.0 + data.icTranEd.m * (sq - 1.0));</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  error = std::max(error, std::abs(data.tranEd - tranEd));</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> </div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <span class="keywordtype">double</span> subEq = (data.icSubEq.c + data.icSubEq.m * (sd * tranEq + (transXd - subXd) * <span class="keywordtype">id</span>)) /</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  (1.0 + data.icSubEq.m * (sd - 1.0));</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  error = std::max(error, std::abs(data.subEq - subEq));</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> </div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="keywordtype">double</span> subEd = (data.icSubEd.c + data.icSubEd.m * (sq * tranEd - (transXq - subXq) * iq)) /</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  (1.0 + data.icSubEd.m * (sq - 1.0));</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  error = std::max(error, std::abs(data.subEd - subEd));</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> </div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  data.tranEq = tranEq;</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  data.tranEd = tranEd;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  data.subEq = subEq;</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  data.subEd = subEd;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  }</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> </div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  <span class="keywordflow">return</span> error;</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> }</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> </div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span> <span class="keywordtype">void</span> Electromechanical::CalculateReferenceSpeed()</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span> {</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  <span class="keywordflow">if</span>(m_useCOI) {</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keywordtype">double</span> sumHW = 0.0;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <span class="keywordtype">double</span> sumH = 0.0;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *it;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <span class="keyword">auto</span> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <span class="keywordtype">double</span> k = 1.0; <span class="comment">// Power base change factor.</span></div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <span class="keywordtype">double</span> oldBase = syncGenerator->GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  k = m_powerSystemBase / oldBase;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  }</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  sumH += data.inertia / k;</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  sumHW += data.inertia * data.speed / k;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  }</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  }</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  m_refSpeed = sumHW / sumH;</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  m_refSpeed = 2.0 * M_PI * m_systemFreq;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  }</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> }</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> </div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> <span class="keywordtype">bool</span> Electromechanical::CalculateSyncMachineSaturation(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncMachine,</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="keywordtype">double</span>& <span class="keywordtype">id</span>,</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  <span class="keywordtype">double</span>& iq,</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  <span class="keywordtype">double</span>& sd,</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <span class="keywordtype">double</span>& sq,</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <span class="keywordtype">bool</span> updateCurrents,</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  <span class="keywordtype">double</span> k)</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> {</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  <span class="comment">// [Ref] Arrillaga, J.; Arnold, C. P.. "Computer Modelling of Electrical Power Systems". Pg. 254-260</span></div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <span class="keyword">auto</span> data = syncMachine->GetElectricalData();</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  <span class="keyword">auto</span> smDataModel = GetSyncMachineModelData(syncMachine);</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> </div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <span class="keywordtype">int</span> n = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(syncMachine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().number;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <span class="keywordflow">if</span>(syncMachine-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  data.terminalVoltage = m_vBus[n];</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  }</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="keywordtype">double</span> idCalc = id;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <span class="keywordtype">double</span> iqCalc = iq;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="keywordtype">double</span> sdCalc = sd;</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="keywordtype">double</span> sqCalc = sq;</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span> </div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  <span class="keywordtype">double</span> vd, vq;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  ABCtoDQ0(data.terminalVoltage, data.delta, vd, vq);</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  <span class="keywordtype">double</span> deltaVd = smDataModel.ed - vd;</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <span class="keywordtype">double</span> deltaVq = smDataModel.eq - vq;</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span> </div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  <span class="keywordtype">double</span> ra = data.armResistance * k;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <span class="keywordtype">double</span> xd = smDataModel.xd;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  <span class="keywordtype">double</span> xq = smDataModel.xq;</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span> </div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  <span class="keywordtype">double</span> syncXd = data.syncXd * k;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <span class="keywordtype">double</span> syncXq = data.syncXq * k;</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <span class="keywordflow">if</span>(data.model == Machines::SM_MODEL_1) {</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  syncXq = data.transXd * k;</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  syncXd = syncXq;</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(data.syncXq == 0.0)</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  syncXq = data.syncXd * k;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> </div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <span class="keywordtype">double</span> xp = data.potierReactance * k;</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <span class="keywordflow">if</span>(xp == 0.0) xp = 0.8 * data.transXd * k;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <span class="keywordtype">double</span> satFacd = (data.satFactor - 1.2) / std::pow(1.2, 7);</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <span class="keywordtype">double</span> satFacq = satFacd * (syncXq / syncXd);</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span> </div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  <span class="keywordtype">bool</span> exit = <span class="keyword">false</span>;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  <span class="keywordtype">int</span> iterations = 0;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  <span class="keywordflow">while</span>(!exit) {</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  <span class="keywordtype">double</span> oldSd = sdCalc;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <span class="keywordtype">double</span> oldSq = sqCalc;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span> </div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  <span class="comment">// Saturated reactances.</span></div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <span class="keywordtype">double</span> xds = (xd - xp) / sdCalc + xp;</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <span class="keywordtype">double</span> xqs = (xq - xp) / sqCalc + xp;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  <span class="comment">// dq currents.</span></div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  <span class="keywordtype">double</span> den = 1.0 / (ra * ra + xds * xqs);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  iqCalc = den * (ra * deltaVq + xds * deltaVd);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  idCalc = den * (-xqs * deltaVq + ra * deltaVd);</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  <span class="comment">// Potier voltages</span></div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  <span class="keywordtype">double</span> epq = vq + ra * iqCalc - xp * idCalc;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  <span class="keywordtype">double</span> epd = vd + ra * idCalc + xp * iqCalc;</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  <span class="comment">// Saturation factors.</span></div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <span class="comment">// Gauss</span></div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  <span class="comment">/*sdCalc = 1.0 + satFacd * std::pow(epq, 6);</span></div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> <span class="comment"> sqCalc = 1.0 + satFacq * std::pow(epd, 6);*/</span></div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> </div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  <span class="comment">// Newton-raphson</span></div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keywordtype">double</span> f1 = 1.0 - sdCalc + satFacd * std::pow(epq, 6);</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  <span class="keywordtype">double</span> f2 = 1.0 - sqCalc + satFacq * std::pow(epd, 6);</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  <span class="keywordtype">double</span> dF1dSd =</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  (6.0 * satFacd * std::pow(epq, 5) * xp * (xd - xp) * deltaVq) / ((sdCalc - 1.0) * xp + xd) - 1.0;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  <span class="keywordtype">double</span> dF2dSq =</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  (6.0 * satFacq * std::pow(epd, 5) * xp * (xq - xp) * deltaVd) / ((sqCalc - 1.0) * xp + xq) - 1.0;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span> </div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  sdCalc = sdCalc - f1 / dF1dSd;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  sqCalc = sqCalc - f2 / dF2dSq;</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span> </div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  <span class="keywordtype">double</span> error = std::abs(sdCalc - oldSd) + std::abs(sqCalc - oldSq);</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <span class="keywordflow">if</span>(error < m_saturationTolerance) exit = <span class="keyword">true</span>;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span> </div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  iterations++;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="keywordflow">if</span>((iterations >= m_maxIterations) & !exit) {</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  m_errorMsg =</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  _(<span class="stringliteral">"It was not possible to solve the saturation of the synchronous machine \""</span>) + data.name + wxT(<span class="stringliteral">"\"."</span>);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  }</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  }</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span> </div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  sd = sdCalc;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  sq = sqCalc;</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  <span class="keywordflow">if</span>(updateCurrents) {</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  <span class="keywordtype">id</span> = idCalc;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  iq = iqCalc;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  }</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> }</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> </div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> <a class="code" href="struct_sync_machine_model_data.html">SyncMachineModelData</a> Electromechanical::GetSyncMachineModelData(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncMachine)</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> {</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  <a class="code" href="struct_sync_machine_model_data.html">SyncMachineModelData</a> smModelData;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> </div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <span class="keyword">auto</span> data = syncMachine->GetElectricalData();</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <span class="keywordtype">double</span> k = 1.0; <span class="comment">// Power base change factor.</span></div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  <span class="keywordtype">double</span> oldBase = syncMachine->GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  k = m_powerSystemBase / oldBase;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  }</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> </div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="keywordflow">switch</span>(data.model) {</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_1: {</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6">ed</a> = data.tranEd;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076">eq</a> = data.tranEq;</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a> = data.transXd * k;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">xd</a> = smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a>;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_2: {</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6">ed</a> = data.tranEd;</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076">eq</a> = data.tranEq;</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">xd</a> = data.transXd * k;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a> = data.transXq * k;</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <span class="keywordflow">if</span>(smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a> == 0.0) {</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a> = data.syncXq * k;</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  <span class="keywordflow">if</span>(smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a> == 0.0) {</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a> = data.syncXd * k;</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  }</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  }</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_3: {</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6">ed</a> = data.tranEd;</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076">eq</a> = data.tranEq;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">xd</a> = data.transXd * k;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a> = data.transXq * k;</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  <span class="keywordflow">if</span>(smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a> == 0.0) smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a> = smModelData.<a class="code" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">xd</a>;</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_4:</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  <span class="keywordflow">case</span> Machines::SM_MODEL_5: {</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6">ed</a> = data.subEd;</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076">eq</a> = data.subEq;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">xd</a> = data.subXd * k;</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a> = data.subXq * k;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  <span class="keywordflow">if</span>(smModelData.<a class="code" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">xd</a> == 0.0) smModelData.<a class="code" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">xd</a> = smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a>;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  <span class="keywordflow">if</span>(smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a> == 0.0) smModelData.<a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a> = smModelData.<a class="code" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">xd</a>;</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  }</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  <span class="keywordflow">return</span> smModelData;</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span> }</div><div class="ttc" id="struct_switching_data_html_a3323745bf0a3f6461fbc19bc76a189df"><div class="ttname"><a href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">SwitchingData::swTime</a></div><div class="ttdeci">std::vector< double > swTime</div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00095">PowerElement.h:95</a></div></div> <div class="ttc" id="class_control_element_solver_html"><div class="ttname"><a href="class_control_element_solver.html">ControlElementSolver</a></div><div class="ttdoc">Solves in the time the control system. Can solve the control system directly from a ControlEditor or ...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00045">ControlElementSolver.h:45</a></div></div> <div class="ttc" id="class_element_html_a7dce6c1b97facecf3e3b2f1555858b09"><div class="ttname"><a href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">Element::GetParentList</a></div><div class="ttdeci">virtual std::vector< Element * > GetParentList() const</div><div class="ttdoc">Get the parent list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00506">Element.h:506</a></div></div> -<div class="ttc" id="_electromechanical_8h_html"><div class="ttname"><a href="_electromechanical_8h.html">Electromechanical.h</a></div><div class="ttdoc">Calculates the electromechanical transient based on disturbances (e.g. system fault). </div></div> +<div class="ttc" id="_electromechanical_8h_html"><div class="ttname"><a href="_electromechanical_8h.html">Electromechanical.h</a></div></div> <div class="ttc" id="struct_sync_machine_model_data_html_a810b9e3250ebb8f3d4176f6e5a2b1076"><div class="ttname"><a href="struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076">SyncMachineModelData::eq</a></div><div class="ttdeci">double eq</div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00041">Electromechanical.h:41</a></div></div> <div class="ttc" id="class_element_html_aeb786f831736af82b74c1393ee4cd2bb"><div class="ttname"><a href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">Element::SetOnline</a></div><div class="ttdeci">bool SetOnline(bool online=true)</div><div class="ttdoc">Set if the element is online or offline. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00235">Element.cpp:235</a></div></div> <div class="ttc" id="struct_sync_machine_model_data_html_af75546805bf92eb7a8a7280f7964b330"><div class="ttname"><a href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">SyncMachineModelData::xd</a></div><div class="ttdeci">double xd</div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00035">Electromechanical.h:35</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="struct_switching_data_html_af78fb958137a0532ea2a584810708574"><div class="ttname"><a href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">SwitchingData::swType</a></div><div class="ttdeci">std::vector< SwitchingType > swType</div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00094">PowerElement.h:94</a></div></div> <div class="ttc" id="_power_element_8h_html_ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776"><div class="ttname"><a href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00071">PowerElement.h:71</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="struct_sync_machine_model_data_html_ad2bda1ac696b664571e33f657f4a81b6"><div class="ttname"><a href="struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6">SyncMachineModelData::ed</a></div><div class="ttdeci">double ed</div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00039">Electromechanical.h:39</a></div></div> <div class="ttc" id="class_element_html_a57c84a8e6eb80f0fea6e23cdd439d5aa"><div class="ttname"><a href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">Element::IsOnline</a></div><div class="ttdeci">bool IsOnline() const</div><div class="ttdoc">Checks if the element is online or offline. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00227">Element.h:227</a></div></div> -<div class="ttc" id="struct_switching_data_html"><div class="ttname"><a href="struct_switching_data.html">SwitchingData</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00093">PowerElement.h:93</a></div></div> +<div class="ttc" id="struct_switching_data_html"><div class="ttname"><a href="struct_switching_data.html">SwitchingData</a></div><div class="ttdoc">Switching data of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00093">PowerElement.h:93</a></div></div> <div class="ttc" id="struct_simulation_data_html"><div class="ttname"><a href="struct_simulation_data.html">SimulationData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00028">PropertiesData.h:28</a></div></div> <div class="ttc" id="struct_sync_machine_model_data_html"><div class="ttname"><a href="struct_sync_machine_model_data.html">SyncMachineModelData</a></div><div class="ttdoc">Synchronous machine data for different models. </div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00033">Electromechanical.h:33</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> <div class="ttc" id="class_electric_calculation_html_a939e6e75b5e0cb555a82b2f9ef59c59d"><div class="ttname"><a href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">ElectricCalculation::GetYBus</a></div><div class="ttdeci">virtual bool GetYBus(std::vector< std::vector< std::complex< double > > > &yBus, double systemPowerBase, YBusSequence sequence=POSITIVE_SEQ, bool includeSyncMachines=false, bool allLoadsAsImpedances=false)</div><div class="ttdoc">Get the admittance matrix from the list of elements (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8cpp_source.html#l00073">ElectricCalculation.cpp:73</a></div></div> <div class="ttc" id="class_power_element_html_ab78269f9b66fbf90ae09050083e9dbe1"><div class="ttname"><a href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">PowerElement::GetSwitchingData</a></div><div class="ttdeci">virtual SwitchingData GetSwitchingData()</div><div class="ttdoc">Returns the switching data of the element. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00182">PowerElement.h:182</a></div></div> <div class="ttc" id="_control_element_solver_8h_html"><div class="ttname"><a href="_control_element_solver_8h.html">ControlElementSolver.h</a></div></div> -<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00031">Capacitor.h:31</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> -<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00031">Inductor.h:31</a></div></div> +<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdoc">Shunt capactior power element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00038">Capacitor.h:38</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdoc">Inductor shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00038">Inductor.h:38</a></div></div> <div class="ttc" id="struct_sync_machine_model_data_html_af81596945918e86e56f5822a0ba97fbc"><div class="ttname"><a href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">SyncMachineModelData::xq</a></div><div class="ttdeci">double xq</div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00037">Electromechanical.h:37</a></div></div> <div class="ttc" id="class_electric_calculation_html_aff1a62936d87e61764b13f3b0212cf92"><div class="ttname"><a href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">ElectricCalculation::GetElementsFromList</a></div><div class="ttdeci">virtual void GetElementsFromList(std::vector< Element *> elementList)</div><div class="ttdoc">Separate the power elements from a generic list. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8cpp_source.html#l00025">ElectricCalculation.cpp:25</a></div></div> <div class="ttc" id="_power_element_8h_html_ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7"><div class="ttname"><a href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00070">PowerElement.h:70</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_electromechanical_8h.html b/docs/doxygen/html/_electromechanical_8h.html index edeac51..bf54f4c 100644 --- a/docs/doxygen/html/_electromechanical_8h.html +++ b/docs/doxygen/html/_electromechanical_8h.html @@ -90,9 +90,6 @@ $(document).ready(function(){initNavTree('_electromechanical_8h.html','');}); <div class="title">Electromechanical.h File Reference</div> </div> </div><!--header--> <div class="contents"> - -<p>Calculates the electromechanical transient based on disturbances (e.g. system fault). -<a href="#details">More...</a></p> <div class="textblock"><code>#include "<a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>"</code><br /> <code>#include <wx/progdlg.h></code><br /> <code>#include <wx/log.h></code><br /> @@ -105,13 +102,10 @@ Classes</h2></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Synchronous machine data for different models. <a href="struct_sync_machine_model_data.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_electromechanical.html">Electromechanical</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Calculates the electromechanical transient based on disturbances (e.g. system fault). <a href="class_electromechanical.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Calculates the electromechanical transient based on disturbances (e.g. system fault). </p> - -<p class="definition">Definition in file <a class="el" href="_electromechanical_8h_source.html">Electromechanical.h</a>.</p> -</div></div><!-- contents --> +</div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> diff --git a/docs/doxygen/html/_electromechanical_8h_source.html b/docs/doxygen/html/_electromechanical_8h_source.html index fa73240..02710ac 100644 --- a/docs/doxygen/html/_electromechanical_8h_source.html +++ b/docs/doxygen/html/_electromechanical_8h_source.html @@ -90,15 +90,15 @@ $(document).ready(function(){initNavTree('_electromechanical_8h_source.html','') <div class="contents"> <a href="_electromechanical_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef ELECTROMECHANICAL_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define ELECTROMECHANICAL_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/progdlg.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <wx/log.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_control_element_solver.html">ControlElementSolver</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="struct_sync_machine_model_data.html"> 33</a></span> <span class="keyword">struct </span><a class="code" href="struct_sync_machine_model_data.html">SyncMachineModelData</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330"> 35</a></span>  <span class="keywordtype">double</span> <a class="code" href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">xd</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc"> 37</a></span>  <span class="keywordtype">double</span> <a class="code" href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">xq</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6"> 39</a></span>  <span class="keywordtype">double</span> <a class="code" href="struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6">ed</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076"> 41</a></span>  <span class="keywordtype">double</span> <a class="code" href="struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076">eq</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> };</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="class_electromechanical.html"> 51</a></span> <span class="keyword">class </span><a class="code" href="class_electromechanical.html">Electromechanical</a> : <span class="keyword">public</span> <a class="code" href="class_electric_calculation.html">ElectricCalculation</a></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="class_electromechanical.html">Electromechanical</a>(wxWindow* parent, std::vector<Element*> elementList, <a class="code" href="struct_simulation_data.html">SimulationData</a> data);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  ~<a class="code" href="class_electromechanical.html">Electromechanical</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">bool</span> RunStabilityCalculation();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  wxString GetErrorMessage()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_errorMsg; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  std::vector<double> GetTimeVector()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_timeVector; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  std::vector<double> m_wErrorVector;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  std::vector<double> m_deltaErrorVector;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  std::vector<double> m_transEdErrorVector;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  std::vector<double> m_transEqErrorVector;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  std::vector<double> m_numItVector;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector<double> m_sdCVector;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  std::vector<double> m_sqCVector;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">void</span> SetEventTimeList();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">bool</span> HasEvent(<span class="keywordtype">double</span> currentTime);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">void</span> SetEvent(<span class="keywordtype">double</span> currentTime);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> EventTrigger(<span class="keywordtype">double</span> eventTime, <span class="keywordtype">double</span> currentTime);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// double GetPowerValue(double value, ElectricalUnit unit);</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">void</span> InsertSyncMachinesOnYBus();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  std::complex<double> GetSyncMachineAdmittance(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* generator);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">bool</span> InitializeDynamicElements();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">bool</span> CalculateMachinesCurrents();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">void</span> CalculateIntegrationConstants(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator, <span class="keywordtype">double</span> <span class="keywordtype">id</span>, <span class="keywordtype">double</span> iq, <span class="keywordtype">double</span> k = 1.0);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">bool</span> SolveSynchronousMachines();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">void</span> SetSyncMachinesModel();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="struct_sync_machine_model_data.html">SyncMachineModelData</a> GetSyncMachineModelData(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncMachine);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">double</span> CalculateSyncMachineIntVariables(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator,</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">double</span> <span class="keywordtype">id</span>,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">double</span> iq,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">double</span> sd,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">double</span> sq,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">double</span> pe,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">double</span> k = 1.0);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">bool</span> CalculateSyncMachineNonIntVariables(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">double</span>& <span class="keywordtype">id</span>,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">double</span>& iq,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">double</span>& sd,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">double</span>& sq,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">double</span>& pe,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">double</span> k = 1.0);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">void</span> CalculateReferenceSpeed();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">bool</span> CalculateSyncMachineSaturation(<a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncMachine,</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">double</span>& <span class="keywordtype">id</span>,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">double</span>& iq,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">double</span>& sd,</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">double</span>& sq,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">bool</span> updateCurrents = <span class="keyword">true</span>,</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">double</span> k = 1.0);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">void</span> SaveData();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  wxString m_errorMsg = _(<span class="stringliteral">"Unknown error"</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">double</span> m_systemFreq = 60.0;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordtype">double</span> m_refSpeed = 2.0 * M_PI * 60.0;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">bool</span> m_useCOI = <span class="keyword">false</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  std::vector<std::vector<std::complex<double> > > m_yBus;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  std::vector<std::vector<std::complex<double> > > m_yBusU;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  std::vector<std::vector<std::complex<double> > > m_yBusL;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  std::vector<std::complex<double> > m_vBus;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  std::vector<std::complex<double> > m_iBus;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">double</span> m_powerSystemBase = 100e6;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordtype">double</span> m_simTime = 10.0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordtype">double</span> m_plotTime = 1e-2;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">double</span> m_timeStep = 1e-2;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordtype">double</span> m_ctrlTimeStepMultiplier = 0.1;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordtype">double</span> m_tolerance = 1e-8;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordtype">int</span> m_maxIterations = 100;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordtype">double</span> m_saturationTolerance = 1e-8;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  std::vector<double> m_eventTimeList;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  std::vector<bool> m_eventOccurrenceList;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  std::vector<double> m_timeVector;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="comment">// tests</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordtype">double</span> m_wError = 0.0;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordtype">double</span> m_sdC = 1.0;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">double</span> m_sqC = 1.0;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordtype">double</span> m_numIt = 0;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> };</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#endif // ELECTROMECHANICAL_H</span></div><div class="ttc" id="class_control_element_solver_html"><div class="ttname"><a href="class_control_element_solver.html">ControlElementSolver</a></div><div class="ttdoc">Solves in the time the control system. Can solve the control system directly from a ControlEditor or ...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00045">ControlElementSolver.h:45</a></div></div> <div class="ttc" id="struct_sync_machine_model_data_html_a810b9e3250ebb8f3d4176f6e5a2b1076"><div class="ttname"><a href="struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076">SyncMachineModelData::eq</a></div><div class="ttdeci">double eq</div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00041">Electromechanical.h:41</a></div></div> -<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div></div> +<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div></div> <div class="ttc" id="struct_sync_machine_model_data_html_af75546805bf92eb7a8a7280f7964b330"><div class="ttname"><a href="struct_sync_machine_model_data.html#af75546805bf92eb7a8a7280f7964b330">SyncMachineModelData::xd</a></div><div class="ttdeci">double xd</div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00035">Electromechanical.h:35</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="struct_sync_machine_model_data_html_ad2bda1ac696b664571e33f657f4a81b6"><div class="ttname"><a href="struct_sync_machine_model_data.html#ad2bda1ac696b664571e33f657f4a81b6">SyncMachineModelData::ed</a></div><div class="ttdeci">double ed</div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00039">Electromechanical.h:39</a></div></div> <div class="ttc" id="struct_simulation_data_html"><div class="ttname"><a href="struct_simulation_data.html">SimulationData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00028">PropertiesData.h:28</a></div></div> <div class="ttc" id="struct_sync_machine_model_data_html"><div class="ttname"><a href="struct_sync_machine_model_data.html">SyncMachineModelData</a></div><div class="ttdoc">Synchronous machine data for different models. </div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00033">Electromechanical.h:33</a></div></div> -<div class="ttc" id="class_electromechanical_html"><div class="ttname"><a href="class_electromechanical.html">Electromechanical</a></div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00051">Electromechanical.h:51</a></div></div> +<div class="ttc" id="class_electromechanical_html"><div class="ttname"><a href="class_electromechanical.html">Electromechanical</a></div><div class="ttdoc">Calculates the electromechanical transient based on disturbances (e.g. system fault). </div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00051">Electromechanical.h:51</a></div></div> <div class="ttc" id="struct_sync_machine_model_data_html_af81596945918e86e56f5822a0ba97fbc"><div class="ttname"><a href="struct_sync_machine_model_data.html#af81596945918e86e56f5822a0ba97fbc">SyncMachineModelData::xq</a></div><div class="ttdeci">double xq</div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00037">Electromechanical.h:37</a></div></div> -<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> +<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_element_8cpp_source.html b/docs/doxygen/html/_element_8cpp_source.html index f5772b7..3ea17ab 100644 --- a/docs/doxygen/html/_element_8cpp_source.html +++ b/docs/doxygen/html/_element_8cpp_source.html @@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('_element_8cpp_source.html','');}); </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="class_element.html#ab0d0e20be9a36ae676202db753faeec9"> 23</a></span> <a class="code" href="class_element.html#ab0d0e20be9a36ae676202db753faeec9">Element::Element</a>() { m_selectionColour.<a class="code" href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">SetRGBA</a>(0.0, 0.5, 1.0, 0.5); }</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="class_element.html#a13d54ba9c08b6bec651402f1c2bb002c"> 24</a></span> <a class="code" href="class_element.html#a13d54ba9c08b6bec651402f1c2bb002c">Element::~Element</a>() {}</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="class_element.html#a920fe7ba1563615857618f01e64b3284"> 25</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">Element::SetPosition</a>(<span class="keyword">const</span> wxPoint2DDouble position)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_position = position;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_rect =</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  wxRect2DDouble(m_position.m_x - m_width / 2.0 - m_borderSize, m_position.m_y - m_height / 2.0 - m_borderSize,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_width + 2.0 * m_borderSize, m_height + 2.0 * m_borderSize);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_element.html#a35567bc1e306c6db9522ad05a87b98f5"> 33</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a35567bc1e306c6db9522ad05a87b98f5">Element::DrawCircle</a>(wxPoint2DDouble position, <span class="keywordtype">double</span> radius, <span class="keywordtype">int</span> numSegments, GLenum mode)<span class="keyword"> const</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword"></span>{</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  glBegin(mode);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numSegments; i++) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> theta = 2.0 * 3.1415926 * double(i) / double(numSegments);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  glVertex2f(radius * std::cos(theta) + position.m_x, radius * std::sin(theta) + position.m_y);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  glEnd();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keywordtype">void</span> Element::DrawArc(wxPoint2DDouble position,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">double</span> radius,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> initAngle,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">double</span> finalAngle,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">int</span> numSegments,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  GLenum mode)<span class="keyword"> const</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword"></span>{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> initAngRad = wxDegToRad(initAngle);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">double</span> finalAngRad = wxDegToRad(finalAngle);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  glBegin(mode);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i <= numSegments; i++) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">double</span> theta = initAngRad + (finalAngRad - initAngRad) * <span class="keywordtype">double</span>(i) / double(numSegments);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  glVertex2f(radius * std::cos(theta) + position.m_x, radius * std::sin(theta) + position.m_y);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  glEnd();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="class_element.html#ae425d7e4f94bf7280d7d68c577d2019e"> 60</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#ae425d7e4f94bf7280d7d68c577d2019e">Element::DrawTriangle</a>(std::vector<wxPoint2DDouble> points, GLenum mode)<span class="keyword"> const</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="keyword"></span>{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  glBegin(mode);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  glVertex2d(points[i].m_x, points[i].m_y);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  glEnd();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8"> 69</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">Element::DrawRectangle</a>(wxPoint2DDouble position, <span class="keywordtype">double</span> width, <span class="keywordtype">double</span> height, GLenum mode)<span class="keyword"> const</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword"></span>{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  glBegin(mode); <span class="comment">// TODO: GL_QUADS é obsoleto (OpenGL 3.0+), encontrar outra solução.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  glVertex2d(position.m_x - width / 2.0, position.m_y - height / 2.0);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  glVertex2d(position.m_x - width / 2.0, position.m_y + height / 2.0);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glVertex2d(position.m_x + width / 2.0, position.m_y + height / 2.0);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  glVertex2d(position.m_x + width / 2.0, position.m_y - height / 2.0);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  glEnd();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="class_element.html#a971be2d4fab435d9657f88bae36e7cf3"> 79</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">Element::DrawRectangle</a>(wxPoint2DDouble* points, GLenum mode)<span class="keyword"> const</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keyword"></span>{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  glBegin(mode); <span class="comment">// TODO: GL_QUADS é obsoleto (OpenGL 3.0+), encontrar outra solução.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  glVertex2d(points[0].m_x, points[0].m_y);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  glVertex2d(points[1].m_x, points[1].m_y);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  glVertex2d(points[2].m_x, points[2].m_y);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  glVertex2d(points[3].m_x, points[3].m_y);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  glEnd();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="class_element.html#a103b3cb2670012b2695940b094f63ab3"> 89</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a103b3cb2670012b2695940b094f63ab3">Element::DrawLine</a>(std::vector<wxPoint2DDouble> points, GLenum mode)<span class="keyword"> const</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword"></span>{</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  glBegin(mode);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = points.begin(); it != points.end(); ++it) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  glVertex2d((*it).m_x, (*it).m_y);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  glEnd();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_element.html#ad1d0d803fe522d030e2be8dc99eb9b39"> 98</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#ad1d0d803fe522d030e2be8dc99eb9b39">Element::DrawPickbox</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keyword"></span>{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  glLineWidth(1.0);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  glColor4d(1.0, 1.0, 1.0, 0.8);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(position, 8.0, 8.0);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(position, 8.0, 8.0, GL_LINE_LOOP);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="class_element.html#a99b213010776b34a27eb814aff288a34"> 107</a></span> wxPoint2DDouble <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">Element::RotateAtPosition</a>(wxPoint2DDouble pointToRotate, <span class="keywordtype">double</span> angle, <span class="keywordtype">bool</span> degrees)<span class="keyword"> const</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keyword"></span>{</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">double</span> radAngle = angle;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span>(degrees) radAngle = wxDegToRad(angle);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> wxPoint2DDouble(std::cos(radAngle) * (pointToRotate.m_x - m_position.m_x) -</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  std::sin(radAngle) * (pointToRotate.m_y - m_position.m_y) + m_position.m_x,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  std::sin(radAngle) * (pointToRotate.m_x - m_position.m_x) +</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  std::cos(radAngle) * (pointToRotate.m_y - m_position.m_y) + m_position.m_y);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4"> 117</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">Element::StartMove</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  this->m_moveStartPt = position;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  this->m_movePos = m_position;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="class_element.html#abe884d99d12d5252e18956162115b025"> 123</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Element::Move</a>(wxPoint2DDouble position) { <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_movePos + position - m_moveStartPt); }</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8"> 124</a></span> wxPoint2DDouble <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">Element::WorldToScreen</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale, <span class="keywordtype">double</span> offsetX, <span class="keywordtype">double</span> offsetY)<span class="keyword"> const</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="keyword"></span>{</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> wxPoint2DDouble(m_position.m_x + offsetX + translation.m_x, m_position.m_y + offsetY + translation.m_y) *</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  scale;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="class_element.html#a147dd55d902171b212168ffde7262343"> 130</a></span> wxPoint2DDouble <a class="code" href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">Element::WorldToScreen</a>(wxPoint2DDouble position,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  wxPoint2DDouble translation,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">double</span> scale,</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">double</span> offsetX,</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordtype">double</span> offsetY)<span class="keyword"> const</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="keyword"></span>{</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">return</span> wxPoint2DDouble(position.m_x + offsetX + translation.m_x, position.m_y + offsetY + translation.m_y) * scale;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="class_element.html#a4b6dd88902e04b52fe14dfc73c51fd50"> 139</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a4b6dd88902e04b52fe14dfc73c51fd50">Element::DrawPoint</a>(wxPoint2DDouble position, <span class="keywordtype">double</span> size)<span class="keyword"> const</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="keyword"></span>{</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  glPointSize(size);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  glBegin(GL_POINTS);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  glVertex2d(position.m_x, position.m_y);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  glEnd();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="class_element.html#a01563b5b2fed2860132f4dd1593f9eea"> 147</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_element.html#a01563b5b2fed2860132f4dd1593f9eea">Element::RotatedRectanglesIntersects</a>(wxRect2DDouble rect1,</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  wxRect2DDouble rect2,</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordtype">double</span> angle1,</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordtype">double</span> angle2)<span class="keyword"> const</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keyword"></span>{</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  wxPoint2DDouble rect1Corners[4] = {rect1.GetLeftTop(), rect1.GetLeftBottom(), rect1.GetRightBottom(),</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  rect1.GetRightTop()};</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  wxPoint2DDouble rect2Corners[4] = {rect2.GetLeftTop(), rect2.GetLeftBottom(), rect2.GetRightBottom(),</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  rect2.GetRightTop()};</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  wxPoint2DDouble rect1Center(rect1.m_x + rect1.m_width / 2.0, rect1.m_y + rect1.m_height / 2.0);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  wxPoint2DDouble rect2Center(rect2.m_x + rect2.m_width / 2.0, rect2.m_y + rect2.m_height / 2.0);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// Rotate the corners.</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordtype">double</span> radAngle1 = wxDegToRad(angle1);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordtype">double</span> radAngle2 = wxDegToRad(angle2);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 4; i++) {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  rect1Corners[i] =</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  wxPoint2DDouble(std::cos(radAngle1) * (rect1Corners[i].m_x - rect1Center.m_x) -</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  std::sin(radAngle1) * (rect1Corners[i].m_y - rect1Center.m_y) + rect1Center.m_x,</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  std::sin(radAngle1) * (rect1Corners[i].m_x - rect1Center.m_x) +</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  std::cos(radAngle1) * (rect1Corners[i].m_y - rect1Center.m_y) + rect1Center.m_y);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  rect2Corners[i] =</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  wxPoint2DDouble(std::cos(radAngle2) * (rect2Corners[i].m_x - rect2Center.m_x) -</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  std::sin(radAngle2) * (rect2Corners[i].m_y - rect2Center.m_y) + rect2Center.m_x,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  std::sin(radAngle2) * (rect2Corners[i].m_x - rect2Center.m_x) +</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  std::cos(radAngle2) * (rect2Corners[i].m_y - rect2Center.m_y) + rect2Center.m_y);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">//[Ref] http://www.gamedev.net/page/resources/_/technical/game-programming/2d-rotated-rectangle-collision-r2604</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="comment">// Find the rectangles axis to project</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  wxPoint2DDouble axis[4] = {rect1Corners[3] - rect1Corners[0], rect1Corners[3] - rect1Corners[2],</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  rect2Corners[3] - rect2Corners[0], rect2Corners[3] - rect2Corners[2]};</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// Calculate the projected points to each axis</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  wxPoint2DDouble rect1ProjPts[4][4]; <span class="comment">// [axis][corner]</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  wxPoint2DDouble rect2ProjPts[4][4]; <span class="comment">// [axis][corner]</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 4; i++) {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordtype">double</span> den = axis[i].m_x * axis[i].m_x + axis[i].m_y * axis[i].m_y;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 4; j++) {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordtype">double</span> m_rectProj = (rect1Corners[j].m_x * axis[i].m_x + rect1Corners[j].m_y * axis[i].m_y) / den;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordtype">double</span> rectProj = (rect2Corners[j].m_x * axis[i].m_x + rect2Corners[j].m_y * axis[i].m_y) / den;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  rect1ProjPts[i][j] = wxPoint2DDouble(m_rectProj * axis[i].m_x, m_rectProj * axis[i].m_y);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  rect2ProjPts[i][j] = wxPoint2DDouble(rectProj * axis[i].m_x, rectProj * axis[i].m_y);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// Calculate the scalar value to identify the max and min values on projections</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordtype">double</span> rect1Scalar[4][4]; <span class="comment">//[axis][corner]</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordtype">double</span> rect2Scalar[4][4]; <span class="comment">//[axis][corner]</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 4; i++) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 4; j++) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  rect1Scalar[i][j] = rect1ProjPts[i][j].m_x * axis[i].m_x + rect1ProjPts[i][j].m_y * axis[i].m_y;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  rect2Scalar[i][j] = rect2ProjPts[i][j].m_x * axis[i].m_x + rect2ProjPts[i][j].m_y * axis[i].m_y;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// Identify the max and min scalar values</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordtype">double</span> rect1Min[4];</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordtype">double</span> rect1Max[4];</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordtype">double</span> rect2Min[4];</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordtype">double</span> rect2Max[4];</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 4; i++) {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  rect1Max[i] = rect1Scalar[i][0];</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  rect2Max[i] = rect2Scalar[i][0];</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  rect1Min[i] = rect1Scalar[i][0];</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  rect2Min[i] = rect2Scalar[i][0];</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 1; j < 4; j++) {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span>(rect1Max[i] < rect1Scalar[i][j]) rect1Max[i] = rect1Scalar[i][j];</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span>(rect2Max[i] < rect2Scalar[i][j]) rect2Max[i] = rect2Scalar[i][j];</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span>(rect1Min[i] > rect1Scalar[i][j]) rect1Min[i] = rect1Scalar[i][j];</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span>(rect2Min[i] > rect2Scalar[i][j]) rect2Min[i] = rect2Scalar[i][j];</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">// Check if any segment don't overlap</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 4; i++) {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">if</span>(!(rect2Min[i] <= rect1Max[i] && rect2Max[i] >= rect1Min[i])) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb"> 235</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">Element::SetOnline</a>(<span class="keywordtype">bool</span> online)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="comment">// Check if any parent is null.</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_parentList.begin(); it != m_parentList.end(); it++) {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">if</span>(!(*it)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_online = online;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="class_element.html#a35f55626a29d5256f8dc07cf92655e64"> 245</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a35f55626a29d5256f8dc07cf92655e64">Element::GeneralMenuItens</a>(wxMenu& menu)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  wxFileName exeFileName(wxStandardPaths::Get().GetExecutablePath());</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  wxString exePath = exeFileName.GetPath();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  wxMenuItem* clockItem = <span class="keyword">new</span> wxMenuItem(&menu, <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a9d58b2fe374676b88029d401da0d77a8">ID_ROTATE_CLOCK</a>, _(<span class="stringliteral">"Rotate clockwise"</span>));</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  clockItem->SetBitmap(wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\menu\\rotateClock16.png"</span>));</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  menu.Append(clockItem);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  wxMenuItem* counterClockItem = <span class="keyword">new</span> wxMenuItem(&menu, <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049adeee9ba1a6f37ff0622ca94a52e40551">ID_ROTATE_COUNTERCLOCK</a>, _(<span class="stringliteral">"Rotate counter-clockwise"</span>));</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  counterClockItem->SetBitmap(wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\menu\\rotateCounterClock16.png"</span>));</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  menu.Append(counterClockItem);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  wxMenuItem* deleteItem = <span class="keyword">new</span> wxMenuItem(&menu, <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a80c989d88bc686137e96564dfad6166a">ID_DELETE</a>, _(<span class="stringliteral">"Delete"</span>));</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  deleteItem->SetBitmap(wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\menu\\delete16.png"</span>));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  menu.Append(deleteItem);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div><div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="class_element.html#a57f5771fd003020fef3866a1d1dc7487"> 263</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a57f5771fd003020fef3866a1d1dc7487">Element::CalculateBoundaries</a>(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom)<span class="keyword"> const</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="keyword"></span>{</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="comment">// Check rect corners boundaries.</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="comment">// Get rectangle corners</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  wxPoint2DDouble rectCorner[4] = {m_rect.GetLeftTop(), m_rect.GetLeftBottom(), m_rect.GetRightBottom(),</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  m_rect.GetRightTop()};</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="comment">// Rotate corners.</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 4; ++i) {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  rectCorner[i] = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(rectCorner[i], m_angle);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  leftUp = rectCorner[0];</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  rightBottom = rectCorner[0];</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < 4; ++i) {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">if</span>(rectCorner[i].m_x < leftUp.m_x) leftUp.m_x = rectCorner[i].m_x;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">if</span>(rectCorner[i].m_y < leftUp.m_y) leftUp.m_y = rectCorner[i].m_y;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span>(rectCorner[i].m_x > rightBottom.m_x) rightBottom.m_x = rectCorner[i].m_x;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">if</span>(rectCorner[i].m_y > rightBottom.m_y) rightBottom.m_y = rectCorner[i].m_y;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// Check points list boundaries.</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_pointList.size(); i++) {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">if</span>(m_pointList[i].m_x < leftUp.m_x) leftUp.m_x = m_pointList[i].m_x;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">if</span>(m_pointList[i].m_y < leftUp.m_y) leftUp.m_y = m_pointList[i].m_y;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span>(m_pointList[i].m_x > rightBottom.m_x) rightBottom.m_x = m_pointList[i].m_x;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">if</span>(m_pointList[i].m_y > rightBottom.m_y) rightBottom.m_y = m_pointList[i].m_y;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a"> 292</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(wxWindow* parent, wxString strValue, <span class="keywordtype">double</span>& value, wxString errorMsg)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordtype">double</span> dValue = 0.0;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span>(!strValue.ToDouble(&dValue)) {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  wxMessageDialog msgDialog(parent, errorMsg, _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  value = dValue;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="class_element.html#a4c93a9e20ed0ca0c376cf412b4347159"> 306</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_element.html#a4c93a9e20ed0ca0c376cf412b4347159">Element::IntFromString</a>(wxWindow* parent, wxString strValue, <span class="keywordtype">int</span>& value, wxString errorMsg)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordtype">long</span> <span class="keywordtype">int</span> iValue = 0;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">if</span>(!strValue.ToLong(&iValue)) {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  wxMessageDialog msgDialog(parent, errorMsg, _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  value = iValue;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="class_element.html#abb2e253ec1e86353cd7160209c96553c"> 320</a></span> wxString <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a>(<span class="keywordtype">double</span> value, <span class="keywordtype">int</span> minDecimal)</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  wxString str = wxString::FromCDouble(value, 13);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordtype">int</span> cutNumber = 0;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordtype">int</span> numDecimal = 0;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordtype">bool</span> foundCut = <span class="keyword">false</span>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = (<span class="keywordtype">int</span>)str.length() - 1; i >= 0; i--) {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span>(str[i] != <span class="charliteral">'0'</span> && !foundCut) {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  cutNumber = i;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  foundCut = <span class="keyword">true</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">if</span>(str[i] == <span class="charliteral">'.'</span>) {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  numDecimal = i;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  wxString formatedStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">if</span>(cutNumber - numDecimal > minDecimal)</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  formatedStr = wxString::FromDouble(value, cutNumber - numDecimal);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  formatedStr = wxString::FromDouble(value, minDecimal);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">return</span> formatedStr;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="class_element.html#a74ec9a279ac0127550e00941206dddb1"> 346</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a74ec9a279ac0127550e00941206dddb1">Element::ReplaceParent</a>(<a class="code" href="class_element.html">Element</a>* oldParent, <a class="code" href="class_element.html">Element</a>* newParent)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_parentList.size(); i++) {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">if</span>(m_parentList[i] == oldParent) m_parentList[i] = newParent;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62"> 353</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">Element::AddChild</a>(<a class="code" href="class_element.html">Element</a>* child) { m_childList.push_back(child); }</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09"> 354</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">Element::RemoveChild</a>(<a class="code" href="class_element.html">Element</a>* child)</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_childList.begin(); it != m_childList.end(); ++it) {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">if</span>(element == child) m_childList.erase(it--);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div><div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="class_element.html#ad5f4bee2e241c430a643f46dadf3d3f5"> 362</a></span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#ad5f4bee2e241c430a643f46dadf3d3f5">Element::ReplaceChild</a>(<a class="code" href="class_element.html">Element</a>* oldChild, <a class="code" href="class_element.html">Element</a>* newChild)</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_childList.size(); i++) {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">if</span>(m_childList[i] == oldChild) m_childList[i] = newChild;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94"> 369</a></span> <span class="keywordtype">void</span> <a class="code" href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">OpenGLColour::SetRGBA</a>(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  rgba[0] = red;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  rgba[1] = green;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  rgba[2] = blue;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  rgba[3] = alpha;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="class_open_g_l_colour.html#acc6fa05591fe3881c4d3ffee1bd5b0ad"> 377</a></span> <a class="code" href="class_open_g_l_colour.html#acc6fa05591fe3881c4d3ffee1bd5b0ad">OpenGLColour::OpenGLColour</a>() { SetRGBA(1.0, 1.0, 1.0, 1.0); }</div><div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="class_open_g_l_colour.html#a273751fe4b9efccc28565ec5be7d7967"> 378</a></span> <a class="code" href="class_open_g_l_colour.html#acc6fa05591fe3881c4d3ffee1bd5b0ad">OpenGLColour::OpenGLColour</a>(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  SetRGBA(red, green, blue, alpha);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="class_element.html#a158e271d7f309cd49002ca3c98365e9b"> 383</a></span> <span class="keywordtype">double</span> <a class="code" href="class_element.html#a158e271d7f309cd49002ca3c98365e9b">Element::PointToLineDistance</a>(wxPoint2DDouble point, <span class="keywordtype">int</span>* segmentNumber)<span class="keyword"> const</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="keyword"></span>{</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="comment">//[Ref] http://geomalgorithms.com/a02-_lines.html</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordtype">double</span> distance = 100.0; <span class="comment">// Big initial distance.</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  wxPoint2DDouble p0 = point;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordtype">double</span> d = 0.0;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  wxPoint2DDouble p1 = m_pointList[i];</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  wxPoint2DDouble p2 = m_pointList[i + 1];</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  wxPoint2DDouble v = p2 - p1;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  wxPoint2DDouble w = p0 - p1;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordtype">double</span> c1 = w.m_x * v.m_x + w.m_y * v.m_y;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordtype">double</span> c2 = v.m_x * v.m_x + v.m_y * v.m_y;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span> </div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">if</span>(c1 <= 0.0) {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  d = std::sqrt(std::pow(p0.m_y - p1.m_y, 2) + std::pow(p0.m_x - p1.m_x, 2));</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(c2 <= c1) {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  d = std::sqrt(std::pow(p0.m_y - p2.m_y, 2) + std::pow(p0.m_x - p2.m_x, 2));</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  d = std::abs((p2.m_y - p1.m_y) * p0.m_x - (p2.m_x - p1.m_x) * p0.m_y + p2.m_x * p1.m_y - p2.m_y * p1.m_x) /</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  std::sqrt(std::pow(p2.m_y - p1.m_y, 2) + std::pow(p2.m_x - p1.m_x, 2));</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">if</span>(d < distance) {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  distance = d;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">if</span>(segmentNumber) *segmentNumber = i;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">return</span> distance;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> }</div><div class="ttc" id="class_element_html_abe884d99d12d5252e18956162115b025"><div class="ttname"><a href="class_element.html#abe884d99d12d5252e18956162115b025">Element::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00123">Element.cpp:123</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_element_html_ae425d7e4f94bf7280d7d68c577d2019e"><div class="ttname"><a href="class_element.html#ae425d7e4f94bf7280d7d68c577d2019e">Element::DrawTriangle</a></div><div class="ttdeci">virtual void DrawTriangle(std::vector< wxPoint2DDouble > points, GLenum mode=GL_TRIANGLES) const</div><div class="ttdoc">Draw a triangle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00060">Element.cpp:60</a></div></div> <div class="ttc" id="class_element_html_a103b3cb2670012b2695940b094f63ab3"><div class="ttname"><a href="class_element.html#a103b3cb2670012b2695940b094f63ab3">Element::DrawLine</a></div><div class="ttdeci">virtual void DrawLine(std::vector< wxPoint2DDouble > points, GLenum mode=GL_LINE_STRIP) const</div><div class="ttdoc">Draw line. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00089">Element.cpp:89</a></div></div> <div class="ttc" id="class_element_html_abfee7ea88f4689c2a6eb4d39452f84d8"><div class="ttname"><a href="class_element.html#abfee7ea88f4689c2a6eb4d39452f84d8">Element::WorldToScreen</a></div><div class="ttdeci">virtual wxPoint2DDouble WorldToScreen(wxPoint2DDouble translation, double scale, double offsetX=0.0, double offsetY=0.0) const</div><div class="ttdoc">Convert the element position to screen position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00124">Element.cpp:124</a></div></div> @@ -101,7 +101,7 @@ $(document).ready(function(){initNavTree('_element_8cpp_source.html','');}); <div class="ttc" id="class_element_html_a99b213010776b34a27eb814aff288a34"><div class="ttname"><a href="class_element.html#a99b213010776b34a27eb814aff288a34">Element::RotateAtPosition</a></div><div class="ttdeci">virtual wxPoint2DDouble RotateAtPosition(wxPoint2DDouble pointToRotate, double angle, bool degrees=true) const</div><div class="ttdoc">Rotate a point as element position being the origin. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00107">Element.cpp:107</a></div></div> <div class="ttc" id="class_element_html_a57f5771fd003020fef3866a1d1dc7487"><div class="ttname"><a href="class_element.html#a57f5771fd003020fef3866a1d1dc7487">Element::CalculateBoundaries</a></div><div class="ttdeci">virtual void CalculateBoundaries(wxPoint2DDouble &leftUp, wxPoint2DDouble &rightBottom) const</div><div class="ttdoc">Calculate the element boundaries. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00263">Element.cpp:263</a></div></div> <div class="ttc" id="class_element_html_a6c37e613808c5ee3bc37bb14a1fe85c8"><div class="ttname"><a href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">Element::DrawRectangle</a></div><div class="ttdeci">virtual void DrawRectangle(wxPoint2DDouble position, double width, double height, GLenum mode=GL_QUADS) const</div><div class="ttdoc">Draw rectangle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00069">Element.cpp:69</a></div></div> -<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div><div class="ttdoc">Class to manage color of OpenGL. </div></div> +<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div></div> <div class="ttc" id="class_element_html_a35f55626a29d5256f8dc07cf92655e64"><div class="ttname"><a href="class_element.html#a35f55626a29d5256f8dc07cf92655e64">Element::GeneralMenuItens</a></div><div class="ttdeci">virtual void GeneralMenuItens(wxMenu &menu)</div><div class="ttdoc">Insert general itens to context menu. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00245">Element.cpp:245</a></div></div> <div class="ttc" id="class_element_html_ad5f4bee2e241c430a643f46dadf3d3f5"><div class="ttname"><a href="class_element.html#ad5f4bee2e241c430a643f46dadf3d3f5">Element::ReplaceChild</a></div><div class="ttdeci">virtual void ReplaceChild(Element *oldChild, Element *newChild)</div><div class="ttdoc">Replace a child from the list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00362">Element.cpp:362</a></div></div> <div class="ttc" id="class_element_html_a4c93a9e20ed0ca0c376cf412b4347159"><div class="ttname"><a href="class_element.html#a4c93a9e20ed0ca0c376cf412b4347159">Element::IntFromString</a></div><div class="ttdeci">static bool IntFromString(wxWindow *parent, wxString strValue, int &value, wxString errorMsg)</div><div class="ttdoc">Convert a string to int. Show a error message if the conversion fail. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00306">Element.cpp:306</a></div></div> diff --git a/docs/doxygen/html/_element_8h.html b/docs/doxygen/html/_element_8h.html index 453f108..7fda9d3 100644 --- a/docs/doxygen/html/_element_8h.html +++ b/docs/doxygen/html/_element_8h.html @@ -91,9 +91,6 @@ $(document).ready(function(){initNavTree('_element_8h.html','');}); <div class="title">Element.h File Reference</div> </div> </div><!--header--> <div class="contents"> - -<p>Class to manage color of OpenGL. -<a href="#details">More...</a></p> <div class="textblock"><code>#include <wx/msgdlg.h></code><br /> <code>#include <wx/geometry.h></code><br /> <code>#include <wx/cursor.h></code><br /> @@ -108,8 +105,10 @@ $(document).ready(function(){initNavTree('_element_8h.html','');}); <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Classes</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_open_g_l_colour.html">OpenGLColour</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Class to manage color of OpenGL. <a href="class_open_g_l_colour.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_element.html">Element</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Base class of all elements of the program. This class is responsible for manage graphical and his data. <a href="class_element.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> @@ -140,12 +139,7 @@ Enumerations</h2></td></tr> </td></tr> <tr class="separator:a0a9284bee7d4ad748c4a740fdeb3f049"><td class="memSeparator" colspan="2"> </td></tr> </table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Class to manage color of OpenGL. </p> -<p>Base class of all elements of the program. This class is responsible for manage graphical and his data.</p> - -<p class="definition">Definition in file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> -</div><h2 class="groupheader">Enumeration Type Documentation</h2> +<h2 class="groupheader">Enumeration Type Documentation</h2> <a id="a0a9284bee7d4ad748c4a740fdeb3f049"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0a9284bee7d4ad748c4a740fdeb3f049">◆ </a></span>ContextMenuID</h2> diff --git a/docs/doxygen/html/_element_8h_source.html b/docs/doxygen/html/_element_8h_source.html index afc215f..d71ef94 100644 --- a/docs/doxygen/html/_element_8h_source.html +++ b/docs/doxygen/html/_element_8h_source.html @@ -91,7 +91,7 @@ $(document).ready(function(){initNavTree('_element_8h_source.html','');}); <a href="_element_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef ELEMENT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define ELEMENT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <wx/msgdlg.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <wx/geometry.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/cursor.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <wx/menu.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <wx/stdpaths.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <wx/filename.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <GL/gl.h></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <complex></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//#include <wx/log.h></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316"> 37</a></span> <span class="keyword">enum</span> <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316">PickboxID</a> {</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433"> 38</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a> = 0, </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0"> 39</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0">ID_PB_RIGHT</a>, </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721"> 40</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721">ID_PB_LEFT</a>, </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a982b811b9fa895eb15a3f8400ffa385d"> 41</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a982b811b9fa895eb15a3f8400ffa385d">ID_PB_RIGHT_BOTTOM</a>, </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a34118762cdb912e35698c4550edf470c"> 42</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a34118762cdb912e35698c4550edf470c">ID_PB_RIGHT_TOP</a>, </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa962fdbb47309de8b6f16025e2d46b2f"> 43</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa962fdbb47309de8b6f16025e2d46b2f">ID_PB_LEFT_BOTTOM</a>, </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a49b276646725b598a6b3a24ee74e8afb"> 44</a></span>  <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a49b276646725b598a6b3a24ee74e8afb">ID_PB_LEFT_TOP</a> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049"> 51</a></span> <span class="keyword">enum</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049">ContextMenuID</a> {</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42"> 52</a></span>  <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a> = 0, </div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049af05f38a3b3fea5d6da036dce48e9d960"> 53</a></span>  <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049af05f38a3b3fea5d6da036dce48e9d960">ID_LINE_ADD_NODE</a>, </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a1a8f8c62fc201993f6a605ff06314803"> 54</a></span>  <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a1a8f8c62fc201993f6a605ff06314803">ID_LINE_REMOVE_NODE</a>, </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a9d58b2fe374676b88029d401da0d77a8"> 55</a></span>  <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a9d58b2fe374676b88029d401da0d77a8">ID_ROTATE_CLOCK</a>, </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049adeee9ba1a6f37ff0622ca94a52e40551"> 56</a></span>  <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049adeee9ba1a6f37ff0622ca94a52e40551">ID_ROTATE_COUNTERCLOCK</a>, </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a80c989d88bc686137e96564dfad6166a"> 57</a></span>  <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a80c989d88bc686137e96564dfad6166a">ID_DELETE</a> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="class_open_g_l_colour.html"> 67</a></span> <span class="keyword">class </span><a class="code" href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="class_open_g_l_colour.html#acc6fa05591fe3881c4d3ffee1bd5b0ad">OpenGLColour</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="class_open_g_l_colour.html#acc6fa05591fe3881c4d3ffee1bd5b0ad">OpenGLColour</a>(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="class_open_g_l_colour.html#a4b9a726773b4c82935f15add648ed2a0"> 87</a></span>  <span class="keyword">virtual</span> <a class="code" href="class_open_g_l_colour.html#a4b9a726773b4c82935f15add648ed2a0">~OpenGLColour</a>() {}</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">void</span> <a class="code" href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">SetRGBA</a>(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066"> 101</a></span>  <span class="keyword">const</span> GLdouble* <a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> rgba; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  GLdouble rgba[4];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> };</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="class_element.html"> 113</a></span> <span class="keyword">class </span><a class="code" href="class_element.html">Element</a></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="class_element.html">Element</a>();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_element.html">Element</a>();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="class_element.html#add5da19e56211c76bea78638eca87150"> 130</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_element.html#add5da19e56211c76bea78638eca87150">SetDragging</a>(<span class="keywordtype">bool</span> dragging = <span class="keyword">true</span>) { m_dragging = dragging; }</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec"> 135</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(<span class="keywordtype">double</span> height) { m_height = height; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">void</span> SetPosition(<span class="keyword">const</span> wxPoint2DDouble position);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="class_element.html#a5279e5a513391d399d576bcb83df736b"> 146</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keywordtype">bool</span> selected = <span class="keyword">true</span>) { m_selected = selected; }</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b"> 151</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(<span class="keywordtype">double</span> width) { m_width = width; }</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f"> 156</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(<span class="keywordtype">double</span> angle) { m_angle = angle; }</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c"> 161</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>(<span class="keywordtype">bool</span> showPickbox = <span class="keyword">true</span>) { m_showPickbox = showPickbox; }</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="class_element.html#afed922f1c0803ebdc96e785a7f696504"> 166</a></span>  <span class="keywordtype">void</span> <a class="code" href="class_element.html#afed922f1c0803ebdc96e785a7f696504">SetBorderSize</a>(<span class="keywordtype">double</span> borderSize) { m_borderSize = borderSize; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">bool</span> SetOnline(<span class="keywordtype">bool</span> online = <span class="keyword">true</span>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="class_element.html#a88941f383fb321b1be441838e2b8700f"> 177</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a88941f383fb321b1be441838e2b8700f">SetPointList</a>(std::vector<wxPoint2DDouble> pointList) { m_pointList = pointList; }</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="class_element.html#ab195252edc86fb98ea011050593e7a8a"> 182</a></span>  wxRect2DDouble <a class="code" href="class_element.html#ab195252edc86fb98ea011050593e7a8a">GetRect</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect; }</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="class_element.html#a536ad18a847dcc979c984b3cb287f238"> 187</a></span>  wxPoint2DDouble <a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_position; }</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="class_element.html#a2f78fae8a5869ff53e87ecfdc6fc33b9"> 192</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_element.html#a2f78fae8a5869ff53e87ecfdc6fc33b9">IsDragging</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_dragging; }</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="class_element.html#a616c73ff20402109ede68579094acc3d"> 197</a></span>  <span class="keywordtype">double</span> <a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_height; }</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="class_element.html#ac42604083db300d20c010b50084de91b"> 202</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_selected; }</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00"> 207</a></span>  <span class="keywordtype">double</span> <a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_width; }</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f"> 212</a></span>  <span class="keywordtype">double</span> <a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_angle; }</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb"> 217</a></span>  <span class="keywordtype">double</span> <a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rotationAngle; }</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="class_element.html#abd94ea2ca7984d9a32d3ffd23837a323"> 222</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_element.html#abd94ea2ca7984d9a32d3ffd23837a323">IsPickboxShown</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_showPickbox; }</div><div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa"> 227</a></span>  <span class="keywordtype">bool</span> <a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_online; }</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="class_element.html#aff2870f5979a84a30c27917cb33271f9"> 232</a></span>  <span class="keyword">virtual</span> std::vector<wxPoint2DDouble> <a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_pointList; }</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="class_element.html#a569178e9138490a981511a644536c0f9"> 240</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_element.html#a569178e9138490a981511a644536c0f9">AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="class_element.html#ad1f153a87797633ab310d07e1d06eba9"> 245</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#ad1f153a87797633ab310d07e1d06eba9">AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent) { m_parentList.push_back(parent); }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Intersects(wxRect2DDouble rect) <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3"> 262</a></span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">GetCopy</a>() { <span class="keywordflow">return</span> NULL; }</div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="class_element.html#a9aa2fec8b6c7bef4bf75b9f86fbb76f2"> 267</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a9aa2fec8b6c7bef4bf75b9f86fbb76f2">SetID</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) { m_elementID = id; }</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee"> 272</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementID; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AddChild(<a class="code" href="class_element.html">Element</a>* child);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RemoveChild(<a class="code" href="class_element.html">Element</a>* child);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ReplaceChild(<a class="code" href="class_element.html">Element</a>* oldChild, <a class="code" href="class_element.html">Element</a>* newChild);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486"> 296</a></span>  <span class="keyword">virtual</span> wxString <a class="code" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">GetTipText</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> wxEmptyString; }</div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187"> 302</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const </span>{}</div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e"> 307</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>) {}</div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="class_element.html#a2a436b0497017a1c3d03dba5e59f037e"> 313</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_element.html#a2a436b0497017a1c3d03dba5e59f037e">GetContextMenu</a>(wxMenu& menu) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="class_element.html#aa40c60c03d6a76639d8c6f6bab86720e"> 318</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#aa40c60c03d6a76639d8c6f6bab86720e">AddPoint</a>(wxPoint2DDouble point) {}</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> StartMove(wxPoint2DDouble position);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Move(wxPoint2DDouble position);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd"> 337</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd">MoveNode</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position) {}</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="class_element.html#a95b4f7e9341883ec39d0201148afffb4"> 343</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_element.html#a95b4f7e9341883ec39d0201148afffb4">NodeContains</a>(wxPoint2DDouble position) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="class_element.html#a499c3b52be27d2bf436a13b6f5353b9c"> 347</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a499c3b52be27d2bf436a13b6f5353b9c">UpdateNodes</a>() {}</div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="class_element.html#ac7490a91f3edfff08584567cc84d86b5"> 354</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_element.html#ac7490a91f3edfff08584567cc84d86b5">SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="class_element.html#a9504437b60faf2c5a27584de8a24810c"> 359</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent) {}</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ReplaceParent(<a class="code" href="class_element.html">Element</a>* oldParent, <a class="code" href="class_element.html">Element</a>* newParent);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3"> 372</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>) {}</div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="class_element.html#af4815de7e7698ea116e8e2af51414050"> 379</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_element.html#af4815de7e7698ea116e8e2af51414050">PickboxContains</a>(wxPoint2DDouble position) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="class_element.html#a6f071b6dfd64721ca673bfbe1ca2d525"> 384</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a6f071b6dfd64721ca673bfbe1ca2d525">MovePickbox</a>(wxPoint2DDouble position) {}</div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="class_element.html#a245924c5be948397b101787dbea565ea"> 389</a></span>  <span class="keyword">virtual</span> wxCursor <a class="code" href="class_element.html#a245924c5be948397b101787dbea565ea">GetBestPickboxCursor</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> wxCURSOR_ARROW; }</div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33"> 393</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>() { m_activePickboxID = <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a>; }</div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="class_element.html#a8c16c17a6f22ffcdeb80ffa0ed27a72a"> 397</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_element.html#a8c16c17a6f22ffcdeb80ffa0ed27a72a">ResetNodes</a>() { m_activeNodeID = 0; }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keyword">virtual</span> wxPoint2DDouble WorldToScreen(wxPoint2DDouble translation,</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordtype">double</span> scale,</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordtype">double</span> offsetX = 0.0,</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordtype">double</span> offsetY = 0.0) <span class="keyword">const</span>;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keyword">virtual</span> wxPoint2DDouble WorldToScreen(wxPoint2DDouble position,</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  wxPoint2DDouble translation,</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordtype">double</span> scale,</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordtype">double</span> offsetX = 0.0,</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordtype">double</span> offsetY = 0.0) <span class="keyword">const</span>;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> RotatedRectanglesIntersects(wxRect2DDouble rect1,</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  wxRect2DDouble rect2,</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordtype">double</span> angle1,</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordtype">double</span> angle2) <span class="keyword">const</span>;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawCircle(wxPoint2DDouble position, <span class="keywordtype">double</span> radius, <span class="keywordtype">int</span> numSegments, GLenum mode = GL_LINE_LOOP) <span class="keyword">const</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawArc(wxPoint2DDouble position,</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordtype">double</span> radius,</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordtype">double</span> initAngle,</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordtype">double</span> finalAngle,</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordtype">int</span> numSegments,</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  GLenum mode = GL_LINE_LOOP) <span class="keyword">const</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawRectangle(wxPoint2DDouble position, <span class="keywordtype">double</span> width, <span class="keywordtype">double</span> height, GLenum mode = GL_QUADS) <span class="keyword">const</span>;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> </div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawRectangle(wxPoint2DDouble* points, GLenum mode = GL_QUADS) <span class="keyword">const</span>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> </div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawTriangle(std::vector<wxPoint2DDouble> points, GLenum mode = GL_TRIANGLES) <span class="keyword">const</span>;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawPoint(wxPoint2DDouble position, <span class="keywordtype">double</span> size) <span class="keyword">const</span>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawLine(std::vector<wxPoint2DDouble> points, GLenum mode = GL_LINE_STRIP) <span class="keyword">const</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> </div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawPickbox(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> </div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keyword">virtual</span> wxPoint2DDouble RotateAtPosition(wxPoint2DDouble pointToRotate, <span class="keywordtype">double</span> angle, <span class="keywordtype">bool</span> degrees = <span class="keyword">true</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> </div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09"> 506</a></span>  <span class="keyword">virtual</span> std::vector<Element*> <a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_parentList; }</div><div class="line"><a name="l00511"></a><span class="lineno"><a class="line" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0"> 511</a></span>  <span class="keyword">virtual</span> std::vector<Element*> <a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_childList; }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="comment">// virtual wxPoint2DDouble GetMoveStartPosition() const { return m_moveStartPt; }</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="comment">// virtual wxPoint2DDouble GetMovePosition() const { return m_movePos; }</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span> </div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CalculateBoundaries(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom) <span class="keyword">const</span>;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> GeneralMenuItens(wxMenu& menu);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> </div><div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="class_element.html#ae1652eded3ccbd241a783691117418b2"> 534</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_element.html#ae1652eded3ccbd241a783691117418b2">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> DoubleFromString(wxWindow* parent, wxString strValue, <span class="keywordtype">double</span>& value, wxString errorMsg);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> IntFromString(wxWindow* parent, wxString strValue, <span class="keywordtype">int</span>& value, wxString errorMsg);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keyword">static</span> wxString StringFromDouble(<span class="keywordtype">double</span> value, <span class="keywordtype">int</span> minDecimal = 1);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> PointToLineDistance(wxPoint2DDouble point, <span class="keywordtype">int</span>* segmentNumber = NULL) <span class="keyword">const</span>;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> </div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordtype">int</span> m_elementID = 0;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  std::vector<Element*> m_parentList;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  std::vector<Element*> m_childList;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  wxRect2DDouble m_rect;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  wxPoint2DDouble m_position;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordtype">double</span> m_width = 0.0;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordtype">double</span> m_height = 0.0;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordtype">double</span> m_angle = 0.0;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordtype">double</span> m_borderSize = 2.0;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordtype">double</span> m_rotationAngle = 45.0;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordtype">double</span> m_switchSize = 10.0;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span> </div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  std::vector<wxRect2DDouble> m_switchRect;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordtype">bool</span> m_selected = <span class="keyword">false</span>;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordtype">bool</span> m_dragging = <span class="keyword">false</span>;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordtype">bool</span> m_showPickbox = <span class="keyword">false</span>;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> </div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordtype">int</span> m_activePickboxID = <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a>;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordtype">int</span> m_activeNodeID = 0;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> </div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  std::vector<wxPoint2DDouble> m_pointList;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  std::vector<wxPoint2DDouble> m_movePts;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> </div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  wxPoint2DDouble m_moveStartPt;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  wxPoint2DDouble m_movePos;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> </div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordtype">bool</span> m_online = <span class="keyword">true</span>;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> </div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_selectionColour;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> };</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="preprocessor">#endif // ELEMENT_H</span></div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> <div class="ttc" id="class_element_html_ab8bf35b4a205fa58772402cea7fad89c"><div class="ttname"><a href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">Element::ShowPickbox</a></div><div class="ttdeci">void ShowPickbox(bool showPickbox=true)</div><div class="ttdoc">Set if the pickbox is shown. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00161">Element.h:161</a></div></div> <div class="ttc" id="class_element_html_aa40c60c03d6a76639d8c6f6bab86720e"><div class="ttname"><a href="class_element.html#aa40c60c03d6a76639d8c6f6bab86720e">Element::AddPoint</a></div><div class="ttdeci">virtual void AddPoint(wxPoint2DDouble point)</div><div class="ttdoc">Add point to the list of points that connect the element to the bus. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00318">Element.h:318</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_element_html_a5279e5a513391d399d576bcb83df736b"><div class="ttname"><a href="class_element.html#a5279e5a513391d399d576bcb83df736b">Element::SetSelected</a></div><div class="ttdeci">void SetSelected(bool selected=true)</div><div class="ttdoc">Set element selection. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00146">Element.h:146</a></div></div> <div class="ttc" id="class_element_html_a7dce6c1b97facecf3e3b2f1555858b09"><div class="ttname"><a href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">Element::GetParentList</a></div><div class="ttdeci">virtual std::vector< Element * > GetParentList() const</div><div class="ttdoc">Get the parent list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00506">Element.h:506</a></div></div> <div class="ttc" id="class_element_html_a5da121470a0c26c6b5c57a7c4eeac48b"><div class="ttname"><a href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">Element::SetWidth</a></div><div class="ttdeci">void SetWidth(double width)</div><div class="ttdoc">Set element width. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00151">Element.h:151</a></div></div> @@ -134,7 +134,7 @@ $(document).ready(function(){initNavTree('_element_8h_source.html','');}); <div class="ttc" id="class_element_html_afed922f1c0803ebdc96e785a7f696504"><div class="ttname"><a href="class_element.html#afed922f1c0803ebdc96e785a7f696504">Element::SetBorderSize</a></div><div class="ttdeci">void SetBorderSize(double borderSize)</div><div class="ttdoc">Set the size of the border (shown in selected elements). </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00166">Element.h:166</a></div></div> <div class="ttc" id="_element_8h_html_a7b88da333c092757d91d7492dfa8e316"><div class="ttname"><a href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316">PickboxID</a></div><div class="ttdeci">PickboxID</div><div class="ttdoc">ID of the pickbox. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00037">Element.h:37</a></div></div> <div class="ttc" id="class_element_html_ac42604083db300d20c010b50084de91b"><div class="ttname"><a href="class_element.html#ac42604083db300d20c010b50084de91b">Element::IsSelected</a></div><div class="ttdeci">bool IsSelected() const</div><div class="ttdoc">Checks if the element is selected. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00202">Element.h:202</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> +<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdoc">Class to manage color of OpenGL. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> <div class="ttc" id="class_element_html_af26c67b6dd32eb1b3e417fddf54818c3"><div class="ttname"><a href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">Element::RotateNode</a></div><div class="ttdeci">virtual void RotateNode(Element *parent, bool clockwise=true)</div><div class="ttdoc">Rotate a node. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00372">Element.h:372</a></div></div> <div class="ttc" id="_element_8h_html_a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721"><div class="ttname"><a href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa8b70955f3c623a35fb64e0d95531721">ID_PB_LEFT</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00040">Element.h:40</a></div></div> <div class="ttc" id="_element_8h_html_a7b88da333c092757d91d7492dfa8e316aa962fdbb47309de8b6f16025e2d46b2f"><div class="ttname"><a href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316aa962fdbb47309de8b6f16025e2d46b2f">ID_PB_LEFT_BOTTOM</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00043">Element.h:43</a></div></div> diff --git a/docs/doxygen/html/_element_data_object_8cpp_source.html b/docs/doxygen/html/_element_data_object_8cpp_source.html index 6ce0314..273056d 100644 --- a/docs/doxygen/html/_element_data_object_8cpp_source.html +++ b/docs/doxygen/html/_element_data_object_8cpp_source.html @@ -88,9 +88,10 @@ $(document).ready(function(){initNavTree('_element_data_object_8cpp_source.html' <div class="title">ElementDataObject.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "ElementDataObject.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> ElementDataObject::ElementDataObject() : wxDataObjectSimple(wxDataFormat(<span class="stringliteral">"PSPCopy"</span>))</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_elementsLists = <span class="keyword">new</span> <a class="code" href="struct_elements_lists.html">ElementsLists</a>();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> }</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> ElementDataObject::ElementDataObject(std::vector<Element*> elementList) : wxDataObjectSimple(wxDataFormat(<span class="stringliteral">"PSPCopy"</span>))</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_elementsLists = <span class="keyword">new</span> <a class="code" href="struct_elements_lists.html">ElementsLists</a>();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">if</span>(elementList.size() > 0) {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="comment">// Separate buses (parents) from the rest of the elements (childs).</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="class_element.html">Element</a>* copy = (*it)-><a class="code" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">GetCopy</a>();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">if</span>(copy) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span>(<a class="code" href="class_bus.html">Bus</a>* bus = dynamic_cast<Bus*>(copy))</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_elementsLists->parentList.push_back(bus);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_elementsLists->elementList.push_back(copy);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> ElementDataObject::~ElementDataObject() {}</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keywordtype">size_t</span> ElementDataObject::GetDataSize()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*); }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keywordtype">bool</span> ElementDataObject::GetDataHere(<span class="keywordtype">void</span>* buf)<span class="keyword"> const</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword"></span>{</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  *(<a class="code" href="struct_elements_lists.html">ElementsLists</a>**)buf = m_elementsLists;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keywordtype">bool</span> ElementDataObject::SetData(<span class="keywordtype">size_t</span> len, <span class="keyword">const</span> <span class="keywordtype">void</span>* buf)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_elementsLists = *(<a class="code" href="struct_elements_lists.html">ElementsLists</a>**)buf;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_element_data_object_8h.html">ElementDataObject.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> ElementDataObject::ElementDataObject() : wxDataObjectSimple(wxDataFormat(<span class="stringliteral">"PSPCopy"</span>))</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_elementsLists = <span class="keyword">new</span> <a class="code" href="struct_elements_lists.html">ElementsLists</a>();</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> }</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> ElementDataObject::ElementDataObject(std::vector<Element*> elementList) : wxDataObjectSimple(wxDataFormat(<span class="stringliteral">"PSPCopy"</span>))</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_elementsLists = <span class="keyword">new</span> <a class="code" href="struct_elements_lists.html">ElementsLists</a>();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">if</span>(elementList.size() > 0) {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="comment">// Separate buses (parents) from the rest of the elements (childs).</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="class_element.html">Element</a>* copy = (*it)-><a class="code" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">GetCopy</a>();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">if</span>(copy) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span>(<a class="code" href="class_bus.html">Bus</a>* bus = dynamic_cast<Bus*>(copy))</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_elementsLists->parentList.push_back(bus);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_elementsLists->elementList.push_back(copy);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> ElementDataObject::~ElementDataObject() {}</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keywordtype">size_t</span> ElementDataObject::GetDataSize()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*); }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keywordtype">bool</span> ElementDataObject::GetDataHere(<span class="keywordtype">void</span>* buf)<span class="keyword"> const</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword"></span>{</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  *(<a class="code" href="struct_elements_lists.html">ElementsLists</a>**)buf = m_elementsLists;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keywordtype">bool</span> ElementDataObject::SetData(<span class="keywordtype">size_t</span> len, <span class="keyword">const</span> <span class="keywordtype">void</span>* buf)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_elementsLists = *(<a class="code" href="struct_elements_lists.html">ElementsLists</a>**)buf;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="struct_elements_lists_html"><div class="ttname"><a href="struct_elements_lists.html">ElementsLists</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_data_object_8h_source.html#l00024">ElementDataObject.h:24</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> +<div class="ttc" id="_element_data_object_8h_html"><div class="ttname"><a href="_element_data_object_8h.html">ElementDataObject.h</a></div></div> <div class="ttc" id="class_element_html_aeabe64a5907e917c8b61afd605ea52c3"><div class="ttname"><a href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">Element::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00262">Element.h:262</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_element_data_object_8h.html b/docs/doxygen/html/_element_data_object_8h.html new file mode 100644 index 0000000..7c9b487 --- /dev/null +++ b/docs/doxygen/html/_element_data_object_8h.html @@ -0,0 +1,118 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/ElementDataObject.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_element_data_object_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">ElementDataObject.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_workspace_8h_source.html">Workspace.h</a>"</code><br /> +<code>#include <wx/dataobj.h></code><br /> +</div> +<p><a href="_element_data_object_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_elements_lists.html">ElementsLists</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_element_data_object.html">ElementDataObject</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Class to store the elements in the clipboard. <a href="class_element_data_object.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_element_data_object_8h.html">ElementDataObject.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_element_data_object_8h_source.html b/docs/doxygen/html/_element_data_object_8h_source.html index 99ab853..d709e22 100644 --- a/docs/doxygen/html/_element_data_object_8h_source.html +++ b/docs/doxygen/html/_element_data_object_8h_source.html @@ -88,15 +88,15 @@ $(document).ready(function(){initNavTree('_element_data_object_8h_source.html',' <div class="title">ElementDataObject.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef ELEMENTDATAOBJECT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define ELEMENTDATAOBJECT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_workspace_8h.html">Workspace.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <wx/dataobj.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="struct_elements_lists.html"> 24</a></span> <span class="keyword">struct </span><a class="code" href="struct_elements_lists.html">ElementsLists</a> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  std::vector<Element*> elementList;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  std::vector<Bus*> parentList;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> };</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="class_element_data_object.html"> 29</a></span> <span class="keyword">class </span><a class="code" href="class_element_data_object.html">ElementDataObject</a> : <span class="keyword">public</span> wxDataObjectSimple</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <a class="code" href="class_element_data_object.html">ElementDataObject</a>();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="class_element_data_object.html">ElementDataObject</a>(std::vector<Element*> elementList);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  ~<a class="code" href="class_element_data_object.html">ElementDataObject</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">size_t</span> GetDataSize() <span class="keyword">const override</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">bool</span> GetDataHere(<span class="keywordtype">void</span>* buf) <span class="keyword">const override</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">bool</span> SetData(<span class="keywordtype">size_t</span> len, <span class="keyword">const</span> <span class="keywordtype">void</span>* buf) <span class="keyword">override</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="struct_elements_lists.html">ElementsLists</a>* GetElementsLists() { <span class="keywordflow">return</span> m_elementsLists; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="struct_elements_lists.html">ElementsLists</a>* m_elementsLists = NULL;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#endif // ELEMENTDATAOBJECT_H</span></div><div class="ttc" id="_workspace_8h_html"><div class="ttname"><a href="_workspace_8h.html">Workspace.h</a></div></div> +<a href="_element_data_object_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef ELEMENTDATAOBJECT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define ELEMENTDATAOBJECT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_workspace_8h.html">Workspace.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <wx/dataobj.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="struct_elements_lists.html"> 24</a></span> <span class="keyword">struct </span><a class="code" href="struct_elements_lists.html">ElementsLists</a> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  std::vector<Element*> elementList;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  std::vector<Bus*> parentList;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> };</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_element_data_object.html"> 36</a></span> <span class="keyword">class </span><a class="code" href="class_element_data_object.html">ElementDataObject</a> : <span class="keyword">public</span> wxDataObjectSimple</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_element_data_object.html">ElementDataObject</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="class_element_data_object.html">ElementDataObject</a>(std::vector<Element*> elementList);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  ~<a class="code" href="class_element_data_object.html">ElementDataObject</a>();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">size_t</span> GetDataSize() <span class="keyword">const override</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">bool</span> GetDataHere(<span class="keywordtype">void</span>* buf) <span class="keyword">const override</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">bool</span> SetData(<span class="keywordtype">size_t</span> len, <span class="keyword">const</span> <span class="keywordtype">void</span>* buf) <span class="keyword">override</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="struct_elements_lists.html">ElementsLists</a>* GetElementsLists() { <span class="keywordflow">return</span> m_elementsLists; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="struct_elements_lists.html">ElementsLists</a>* m_elementsLists = NULL;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#endif // ELEMENTDATAOBJECT_H</span></div><div class="ttc" id="_workspace_8h_html"><div class="ttname"><a href="_workspace_8h.html">Workspace.h</a></div></div> <div class="ttc" id="struct_elements_lists_html"><div class="ttname"><a href="struct_elements_lists.html">ElementsLists</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_data_object_8h_source.html#l00024">ElementDataObject.h:24</a></div></div> -<div class="ttc" id="class_element_data_object_html"><div class="ttname"><a href="class_element_data_object.html">ElementDataObject</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_data_object_8h_source.html#l00029">ElementDataObject.h:29</a></div></div> +<div class="ttc" id="class_element_data_object_html"><div class="ttname"><a href="class_element_data_object.html">ElementDataObject</a></div><div class="ttdoc">Class to store the elements in the clipboard. </div><div class="ttdef"><b>Definition:</b> <a href="_element_data_object_8h_source.html#l00036">ElementDataObject.h:36</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>ElementDataObject.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_element_data_object_8h.html">ElementDataObject.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_element_plot_data_8cpp_source.html b/docs/doxygen/html/_element_plot_data_8cpp_source.html index 2d20c4a..865ea35 100644 --- a/docs/doxygen/html/_element_plot_data_8cpp_source.html +++ b/docs/doxygen/html/_element_plot_data_8cpp_source.html @@ -88,7 +88,8 @@ $(document).ready(function(){initNavTree('_element_plot_data_8cpp_source.html',' <div class="title">ElementPlotData.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "ElementPlotData.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> ElementPlotData::ElementPlotData(wxString name, CurveType curveType)</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_name = name;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_curveType = curveType;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> ElementPlotData::~ElementPlotData() {}</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keywordtype">void</span> ElementPlotData::AddData(std::vector<double> values, wxString name)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <a class="code" href="class_plot_data.html">PlotData</a>* data = <span class="keyword">new</span> <a class="code" href="class_plot_data.html">PlotData</a>();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  data->SetName(name);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  data->SetValues(values);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  data->SetPlot(<span class="keyword">false</span>);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  data->SetAxis(0);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  data->SetColour(*wxBLACK);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  data->SetPenType(wxPENSTYLE_SOLID);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  data->SetThick(2);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_elementData.push_back(data);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> }</div><div class="ttc" id="class_plot_data_html"><div class="ttname"><a href="class_plot_data.html">PlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00027">ElementPlotData.h:27</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_element_plot_data_8h.html">ElementPlotData.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> ElementPlotData::ElementPlotData(wxString name, CurveType curveType)</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  m_name = name;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_curveType = curveType;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> ElementPlotData::~ElementPlotData() {}</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keywordtype">void</span> ElementPlotData::AddData(std::vector<double> values, wxString name)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <a class="code" href="class_plot_data.html">PlotData</a>* data = <span class="keyword">new</span> <a class="code" href="class_plot_data.html">PlotData</a>();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  data->SetName(name);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  data->SetValues(values);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  data->SetPlot(<span class="keyword">false</span>);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  data->SetAxis(0);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  data->SetColour(*wxBLACK);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  data->SetPenType(wxPENSTYLE_SOLID);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  data->SetThick(2);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_elementData.push_back(data);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> }</div><div class="ttc" id="_element_plot_data_8h_html"><div class="ttname"><a href="_element_plot_data_8h.html">ElementPlotData.h</a></div></div> +<div class="ttc" id="class_plot_data_html"><div class="ttname"><a href="class_plot_data.html">PlotData</a></div><div class="ttdoc">This class is responsible to manage the graphical data of electromechanical result to be plotted on c...</div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00035">ElementPlotData.h:35</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_element_plot_data_8h.html b/docs/doxygen/html/_element_plot_data_8h.html new file mode 100644 index 0000000..efd1791 --- /dev/null +++ b/docs/doxygen/html/_element_plot_data_8h.html @@ -0,0 +1,120 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/ElementPlotData.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_element_plot_data_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">ElementPlotData.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include <wx/treectrl.h></code><br /> +<code>#include <wx/colour.h></code><br /> +<code>#include <wx/pen.h></code><br /> +<code>#include <vector></code><br /> +</div> +<p><a href="_element_plot_data_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_plot_data.html">PlotData</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">This class is responsible to manage the graphical data of electromechanical result to be plotted on chart viewer. <a href="class_plot_data.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_element_plot_data.html">ElementPlotData</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_element_plot_data_8h.html">ElementPlotData.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_element_plot_data_8h_source.html b/docs/doxygen/html/_element_plot_data_8h_source.html index 2d65d02..b86375d 100644 --- a/docs/doxygen/html/_element_plot_data_8h_source.html +++ b/docs/doxygen/html/_element_plot_data_8h_source.html @@ -88,14 +88,14 @@ $(document).ready(function(){initNavTree('_element_plot_data_8h_source.html','') <div class="title">ElementPlotData.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef ELEMENTPLOTDATA_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define ELEMENTPLOTDATA_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <wx/treectrl.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <wx/colour.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/pen.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="class_plot_data.html"> 27</a></span> <span class="keyword">class </span><a class="code" href="class_plot_data.html">PlotData</a> : <span class="keyword">public</span> wxTreeItemData</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="class_plot_data.html">PlotData</a>() {}</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  ~<a class="code" href="class_plot_data.html">PlotData</a>() {}</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">void</span> SetAxis(<span class="keywordtype">int</span> axis) { m_axis = axis; }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">void</span> SetColour(<span class="keyword">const</span> wxColour& colour) { m_colour = colour; }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">void</span> SetName(<span class="keyword">const</span> wxString& name) { m_name = name; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">void</span> SetPenType(<span class="keyword">const</span> wxPenStyle& penType) { m_penType = penType; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">void</span> SetPlot(<span class="keywordtype">bool</span> plot) { m_plot = plot; }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">void</span> SetThick(<span class="keywordtype">int</span> thick) { m_thick = thick; }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">void</span> SetValues(<span class="keyword">const</span> std::vector<double>& values) { m_values = values; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">int</span> GetAxis()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_axis; }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  wxColour GetColour()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_colour; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  wxString GetName()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_name; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  wxPenStyle GetPenType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_penType; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">bool</span> IsPlot()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_plot; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">int</span> GetThick()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_thick; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  std::vector<double> GetValues()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_values; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  std::vector<double> m_values;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  wxString m_name;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">bool</span> m_plot;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  wxColour m_colour;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">int</span> m_thick;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  wxPenStyle m_penType;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">int</span> m_axis;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="class_element_plot_data.html"> 56</a></span> <span class="keyword">class </span><a class="code" href="class_element_plot_data.html">ElementPlotData</a></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">enum</span> CurveType {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  CT_BUS = 0,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  CT_SYNC_GENERATOR,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  CT_SYNC_COMPENSATOR,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  CT_TRANSFORMER,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  CT_LINE,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  CT_IND_MOTOR,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  CT_SHUNT_INDUCTOR,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  CT_SHUNT_CAPACITOR,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  CT_LOAD,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  CT_TEST,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  NUM_ELEMENTS,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  CT_TIME</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a>(){};</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a>(wxString name, CurveType curveType);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  ~<a class="code" href="class_element_plot_data.html">ElementPlotData</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  wxString GetName()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_name; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">void</span> SetName(wxString name) { m_name = name; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  CurveType GetCurveType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_curveType; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">void</span> SetCurveType(CurveType type) { m_curveType = type; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_plot_data.html">PlotData</a>* GetPlotData(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">void</span> AddData(std::vector<double> values, wxString name);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">int</span> GetElementDataNumber()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_elementData.size()); }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  std::vector<double> GetValues(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]->GetValues(); }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">void</span> SetValues(<span class="keywordtype">int</span> index, std::vector<double> values) { m_elementData[index]->SetValues(values); }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> SetPlot(<span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> plot = <span class="keyword">true</span>) { m_elementData[index]->SetPlot(plot); }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  wxString GetDataName(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]->GetName(); }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">void</span> SetDataName(<span class="keywordtype">int</span> index, wxString name) { m_elementData[index]->SetName(name); }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  wxColour GetColour(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]->GetColour(); }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">void</span> SetColour(<span class="keywordtype">int</span> index, wxColour colour) { m_elementData[index]->SetColour(colour); }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">int</span> GetThick(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]->GetThick(); }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">void</span> SetThick(<span class="keywordtype">int</span> index, <span class="keywordtype">int</span> thick) { m_elementData[index]->SetThick(thick); }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  wxPenStyle GetPenType(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]->GetPenType(); }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">void</span> SetPenType(<span class="keywordtype">int</span> index, wxPenStyle penType) { m_elementData[index]->SetPenType(penType); }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">int</span> GetAxis(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]->GetAxis(); }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">void</span> SetAxis(<span class="keywordtype">int</span> index, <span class="keywordtype">int</span> axis) { m_elementData[index]->SetAxis(axis); }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  wxString m_name;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  CurveType m_curveType;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  std::vector<PlotData*> m_elementData;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> };</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#endif // ELEMENTPLOTDATA_H</span></div><div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00056">ElementPlotData.h:56</a></div></div> -<div class="ttc" id="class_plot_data_html"><div class="ttname"><a href="class_plot_data.html">PlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00027">ElementPlotData.h:27</a></div></div> +<a href="_element_plot_data_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef ELEMENTPLOTDATA_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define ELEMENTPLOTDATA_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <wx/treectrl.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <wx/colour.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/pen.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_plot_data.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_plot_data.html">PlotData</a> : <span class="keyword">public</span> wxTreeItemData</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_plot_data.html">PlotData</a>() {}</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  ~<a class="code" href="class_plot_data.html">PlotData</a>() {}</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">void</span> SetAxis(<span class="keywordtype">int</span> axis) { m_axis = axis; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">void</span> SetColour(<span class="keyword">const</span> wxColour& colour) { m_colour = colour; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">void</span> SetName(<span class="keyword">const</span> wxString& name) { m_name = name; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">void</span> SetPenType(<span class="keyword">const</span> wxPenStyle& penType) { m_penType = penType; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">void</span> SetPlot(<span class="keywordtype">bool</span> plot) { m_plot = plot; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">void</span> SetThick(<span class="keywordtype">int</span> thick) { m_thick = thick; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">void</span> SetValues(<span class="keyword">const</span> std::vector<double>& values) { m_values = values; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">int</span> GetAxis()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_axis; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  wxColour GetColour()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_colour; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  wxString GetName()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_name; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  wxPenStyle GetPenType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_penType; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">bool</span> IsPlot()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_plot; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">int</span> GetThick()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_thick; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::vector<double> GetValues()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_values; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  std::vector<double> m_values;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  wxString m_name;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">bool</span> m_plot;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  wxColour m_colour;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">int</span> m_thick;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  wxPenStyle m_penType;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">int</span> m_axis;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> };</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="class_element_plot_data.html"> 64</a></span> <span class="keyword">class </span><a class="code" href="class_element_plot_data.html">ElementPlotData</a></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">enum</span> CurveType {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  CT_BUS = 0,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  CT_SYNC_GENERATOR,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  CT_SYNC_COMPENSATOR,</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  CT_TRANSFORMER,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  CT_LINE,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  CT_IND_MOTOR,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  CT_SHUNT_INDUCTOR,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  CT_SHUNT_CAPACITOR,</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  CT_LOAD,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  CT_TEST,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  NUM_ELEMENTS,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  CT_TIME</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  };</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a>(){};</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a>(wxString name, CurveType curveType);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  ~<a class="code" href="class_element_plot_data.html">ElementPlotData</a>();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  wxString GetName()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_name; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">void</span> SetName(wxString name) { m_name = name; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  CurveType GetCurveType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_curveType; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">void</span> SetCurveType(CurveType type) { m_curveType = type; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="class_plot_data.html">PlotData</a>* GetPlotData(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">void</span> AddData(std::vector<double> values, wxString name);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">int</span> GetElementDataNumber()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_elementData.size()); }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  std::vector<double> GetValues(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]->GetValues(); }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">void</span> SetValues(<span class="keywordtype">int</span> index, std::vector<double> values) { m_elementData[index]->SetValues(values); }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">void</span> SetPlot(<span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> plot = <span class="keyword">true</span>) { m_elementData[index]->SetPlot(plot); }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  wxString GetDataName(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]->GetName(); }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">void</span> SetDataName(<span class="keywordtype">int</span> index, wxString name) { m_elementData[index]->SetName(name); }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  wxColour GetColour(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]->GetColour(); }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">void</span> SetColour(<span class="keywordtype">int</span> index, wxColour colour) { m_elementData[index]->SetColour(colour); }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">int</span> GetThick(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]->GetThick(); }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">void</span> SetThick(<span class="keywordtype">int</span> index, <span class="keywordtype">int</span> thick) { m_elementData[index]->SetThick(thick); }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  wxPenStyle GetPenType(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]->GetPenType(); }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">void</span> SetPenType(<span class="keywordtype">int</span> index, wxPenStyle penType) { m_elementData[index]->SetPenType(penType); }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">int</span> GetAxis(<span class="keywordtype">int</span> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementData[index]->GetAxis(); }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">void</span> SetAxis(<span class="keywordtype">int</span> index, <span class="keywordtype">int</span> axis) { m_elementData[index]->SetAxis(axis); }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  wxString m_name;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  CurveType m_curveType;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  std::vector<PlotData*> m_elementData;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> };</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#endif // ELEMENTPLOTDATA_H</span></div><div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00064">ElementPlotData.h:64</a></div></div> +<div class="ttc" id="class_plot_data_html"><div class="ttname"><a href="class_plot_data.html">PlotData</a></div><div class="ttdoc">This class is responsible to manage the graphical data of electromechanical result to be plotted on c...</div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00035">ElementPlotData.h:35</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>ElementPlotData.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_element_plot_data_8h.html">ElementPlotData.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_exponential_8cpp_source.html b/docs/doxygen/html/_exponential_8cpp_source.html index 78ab458..5061d3d 100644 --- a/docs/doxygen/html/_exponential_8cpp_source.html +++ b/docs/doxygen/html/_exponential_8cpp_source.html @@ -88,13 +88,14 @@ $(document).ready(function(){initNavTree('_exponential_8cpp_source.html','');}); <div class="title">Exponential.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_exponential_8h.html">Exponential.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_exponential_form_8h.html">ExponentialForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Exponential::Exponential(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_width = m_height = 36.0;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <a class="code" href="class_node.html">Node</a>* nodeIn = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-18, 0), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  nodeIn->StartMove(m_position);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <a class="code" href="class_node.html">Node</a>* nodeOut = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(18, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_nodeList.push_back(nodeIn);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> Exponential::~Exponential() {}</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339"> 34</a></span> <span class="keywordtype">void</span> <a class="code" href="class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339">Exponential::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword"></span>{</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  glLineWidth(1.0);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  DrawRectangle(m_position, m_width + borderSize, m_height + borderSize);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Plot symbol.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  std::vector<wxPoint2DDouble> axis;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  axis.push_back(m_position + wxPoint2DDouble(-13, 13));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  axis.push_back(m_position + wxPoint2DDouble(13, 13));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  axis.push_back(m_position + wxPoint2DDouble(-13, -13));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  axis.push_back(m_position + wxPoint2DDouble(-13, 13));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  DrawLine(axis, GL_LINES);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  glLineWidth(2.0);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::vector<wxPoint2DDouble> expSymbol;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  expSymbol.push_back(m_position + wxPoint2DDouble(-13, 13));</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  expSymbol.push_back(m_position + wxPoint2DDouble(-6, 13));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  expSymbol.push_back(m_position + wxPoint2DDouble(2, 12));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  expSymbol.push_back(m_position + wxPoint2DDouble(4, 11));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  expSymbol.push_back(m_position + wxPoint2DDouble(6, 10));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  expSymbol.push_back(m_position + wxPoint2DDouble(8, 7));</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  expSymbol.push_back(m_position + wxPoint2DDouble(11, -1));</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  expSymbol.push_back(m_position + wxPoint2DDouble(12, -7));</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  expSymbol.push_back(m_position + wxPoint2DDouble(13, -13));</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  glColor4d(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  DrawLine(expSymbol);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  DrawNodes();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d"> 73</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d">Exponential::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_exponential_form.html">ExponentialForm</a>* form = <span class="keyword">new</span> <a class="code" href="class_exponential_form.html">ExponentialForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  form->Destroy();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  form->Destroy();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="class_exponential.html#a0714869ee8815119a6d76431bac767ea"> 84</a></span> <span class="keywordtype">void</span> <a class="code" href="class_exponential.html#a0714869ee8815119a6d76431bac767ea">Exponential::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_angle += 90.0;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_angle -= 90.0;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_angle = 0.0;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_angle = 270.0;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  UpdatePoints();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">void</span> Exponential::UpdatePoints()</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -18));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -18));</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keywordtype">void</span> Exponential::GetValues(<span class="keywordtype">double</span>& aValue, <span class="keywordtype">double</span>& bValue)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  aValue = m_aValue;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  bValue = m_bValue;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keywordtype">void</span> Exponential::SetValues(<span class="keywordtype">double</span> aValue, <span class="keywordtype">double</span> bValue)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_aValue = aValue;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_bValue = bValue;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keywordtype">bool</span> Exponential::Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_output = m_aValue * std::exp(m_bValue * input);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="class_exponential.html#a85cda0dba6549828a9045e478e24609f"> 138</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_exponential.html#a85cda0dba6549828a9045e478e24609f">Exponential::GetCopy</a>()</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="class_exponential.html">Exponential</a>* copy = <span class="keyword">new</span> <a class="code" href="class_exponential.html">Exponential</a>(m_elementID);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_exponential_8h.html">Exponential.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_exponential_form_8h.html">ExponentialForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Exponential::Exponential(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_width = m_height = 36.0;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <a class="code" href="class_node.html">Node</a>* nodeIn = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-18, 0), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  nodeIn->StartMove(m_position);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <a class="code" href="class_node.html">Node</a>* nodeOut = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(18, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_nodeList.push_back(nodeIn);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> Exponential::~Exponential() {}</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339"> 34</a></span> <span class="keywordtype">void</span> <a class="code" href="class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339">Exponential::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword"></span>{</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  glLineWidth(1.0);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  DrawRectangle(m_position, m_width + borderSize, m_height + borderSize);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Plot symbol.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  std::vector<wxPoint2DDouble> axis;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  axis.push_back(m_position + wxPoint2DDouble(-13, 13));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  axis.push_back(m_position + wxPoint2DDouble(13, 13));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  axis.push_back(m_position + wxPoint2DDouble(-13, -13));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  axis.push_back(m_position + wxPoint2DDouble(-13, 13));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  DrawLine(axis, GL_LINES);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  glLineWidth(2.0);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::vector<wxPoint2DDouble> expSymbol;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  expSymbol.push_back(m_position + wxPoint2DDouble(-13, 13));</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  expSymbol.push_back(m_position + wxPoint2DDouble(-6, 13));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  expSymbol.push_back(m_position + wxPoint2DDouble(2, 12));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  expSymbol.push_back(m_position + wxPoint2DDouble(4, 11));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  expSymbol.push_back(m_position + wxPoint2DDouble(6, 10));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  expSymbol.push_back(m_position + wxPoint2DDouble(8, 7));</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  expSymbol.push_back(m_position + wxPoint2DDouble(11, -1));</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  expSymbol.push_back(m_position + wxPoint2DDouble(12, -7));</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  expSymbol.push_back(m_position + wxPoint2DDouble(13, -13));</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  glColor4d(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  DrawLine(expSymbol);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  DrawNodes();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d"> 73</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d">Exponential::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_exponential_form.html">ExponentialForm</a>* form = <span class="keyword">new</span> <a class="code" href="class_exponential_form.html">ExponentialForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  form->Destroy();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  form->Destroy();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="class_exponential.html#a0714869ee8815119a6d76431bac767ea"> 84</a></span> <span class="keywordtype">void</span> <a class="code" href="class_exponential.html#a0714869ee8815119a6d76431bac767ea">Exponential::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_angle += 90.0;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_angle -= 90.0;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_angle = 0.0;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_angle = 270.0;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  UpdatePoints();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">void</span> Exponential::UpdatePoints()</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -18));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -18));</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keywordtype">void</span> Exponential::GetValues(<span class="keywordtype">double</span>& aValue, <span class="keywordtype">double</span>& bValue)</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  aValue = m_aValue;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  bValue = m_bValue;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keywordtype">void</span> Exponential::SetValues(<span class="keywordtype">double</span> aValue, <span class="keywordtype">double</span> bValue)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_aValue = aValue;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_bValue = bValue;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="class_exponential.html#ae8e635b32b5d6a8226a3654aa639094f"> 132</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_exponential.html#ae8e635b32b5d6a8226a3654aa639094f">Exponential::Solve</a>(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_output = m_aValue * std::exp(m_bValue * input);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="class_exponential.html#a85cda0dba6549828a9045e478e24609f"> 138</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_exponential.html#a85cda0dba6549828a9045e478e24609f">Exponential::GetCopy</a>()</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="class_exponential.html">Exponential</a>* copy = <span class="keyword">new</span> <a class="code" href="class_exponential.html">Exponential</a>(m_elementID);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> +<div class="ttc" id="class_exponential_html_ae8e635b32b5d6a8226a3654aa639094f"><div class="ttname"><a href="class_exponential.html#ae8e635b32b5d6a8226a3654aa639094f">Exponential::Solve</a></div><div class="ttdeci">virtual bool Solve(double input, double timeStep)</div><div class="ttdoc">Calculates the exponential. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8cpp_source.html#l00132">Exponential.cpp:132</a></div></div> <div class="ttc" id="class_exponential_html_a0714869ee8815119a6d76431bac767ea"><div class="ttname"><a href="class_exponential.html#a0714869ee8815119a6d76431bac767ea">Exponential::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8cpp_source.html#l00084">Exponential.cpp:84</a></div></div> <div class="ttc" id="class_exponential_html_abdf1c3c1d8e7839fc2a8fc914acff68d"><div class="ttname"><a href="class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d">Exponential::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8cpp_source.html#l00073">Exponential.cpp:73</a></div></div> <div class="ttc" id="class_exponential_html_af5f172e2f7ae7df0fc79b44b55355339"><div class="ttname"><a href="class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339">Exponential::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8cpp_source.html#l00034">Exponential.cpp:34</a></div></div> <div class="ttc" id="class_exponential_html_a85cda0dba6549828a9045e478e24609f"><div class="ttname"><a href="class_exponential.html#a85cda0dba6549828a9045e478e24609f">Exponential::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8cpp_source.html#l00138">Exponential.cpp:138</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. . </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00033">Exponential.h:33</a></div></div> +<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00032">Exponential.h:32</a></div></div> <div class="ttc" id="class_exponential_form_html"><div class="ttname"><a href="class_exponential_form.html">ExponentialForm</a></div><div class="ttdoc">Form to edit the exponential control data. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_form_8h_source.html#l00031">ExponentialForm.h:31</a></div></div> <div class="ttc" id="_exponential_8h_html"><div class="ttname"><a href="_exponential_8h.html">Exponential.h</a></div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> diff --git a/docs/doxygen/html/_exponential_8h.html b/docs/doxygen/html/_exponential_8h.html index 9973de9..56fc1e9 100644 --- a/docs/doxygen/html/_exponential_8h.html +++ b/docs/doxygen/html/_exponential_8h.html @@ -97,7 +97,7 @@ $(document).ready(function(){initNavTree('_exponential_8h.html','');}); <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Classes</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_exponential.html">Exponential</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Generates an output following an exponential function. \( output = A\cdot e^{B\cdot input} \). <a href="class_exponential.html#details">More...</a><br /></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Generates an output following an exponential function. <a href="class_exponential.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table> </div><!-- contents --> diff --git a/docs/doxygen/html/_exponential_8h_source.html b/docs/doxygen/html/_exponential_8h_source.html index 67cb366..429bace 100644 --- a/docs/doxygen/html/_exponential_8h_source.html +++ b/docs/doxygen/html/_exponential_8h_source.html @@ -88,15 +88,16 @@ $(document).ready(function(){initNavTree('_exponential_8h_source.html','');}); <div class="title">Exponential.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_exponential_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef EXPONENTIAL_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define EXPONENTIAL_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_exponential_form.html">ExponentialForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_exponential.html"> 33</a></span> <span class="keyword">class </span><a class="code" href="class_exponential.html">Exponential</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="class_exponential.html">Exponential</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  ~<a class="code" href="class_exponential.html">Exponential</a>();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_exponential.html#a79eabfca357002f160b082a6df9f6f2b"> 40</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_exponential.html#a79eabfca357002f160b082a6df9f6f2b">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_exponential.html#a540b1a43045b9bb7c96d32825d15c95e"> 41</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_exponential.html#a540b1a43045b9bb7c96d32825d15c95e">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_exponential.html#a0714869ee8815119a6d76431bac767ea">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> GetValues(<span class="keywordtype">double</span>& aValue, <span class="keywordtype">double</span>& bValue);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetValues(<span class="keywordtype">double</span> aValue, <span class="keywordtype">double</span> bValue);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_exponential.html#a85cda0dba6549828a9045e478e24609f">GetCopy</a>();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> m_aValue = 0.001;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">double</span> m_bValue = 5.0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#endif // EXPONENTIAL_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> -<div class="ttc" id="class_exponential_html_a79eabfca357002f160b082a6df9f6f2b"><div class="ttname"><a href="class_exponential.html#a79eabfca357002f160b082a6df9f6f2b">Exponential::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00040">Exponential.h:40</a></div></div> +<a href="_exponential_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef EXPONENTIAL_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define EXPONENTIAL_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_exponential_form.html">ExponentialForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_exponential.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_exponential.html">Exponential</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_exponential.html">Exponential</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ~<a class="code" href="class_exponential.html">Exponential</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_exponential.html#a79eabfca357002f160b082a6df9f6f2b"> 39</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_exponential.html#a79eabfca357002f160b082a6df9f6f2b">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_exponential.html#a540b1a43045b9bb7c96d32825d15c95e"> 40</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_exponential.html#a540b1a43045b9bb7c96d32825d15c95e">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_exponential.html#a0714869ee8815119a6d76431bac767ea">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> GetValues(<span class="keywordtype">double</span>& aValue, <span class="keywordtype">double</span>& bValue);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetValues(<span class="keywordtype">double</span> aValue, <span class="keywordtype">double</span> bValue);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_exponential.html#ae8e635b32b5d6a8226a3654aa639094f">Solve</a>(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_exponential.html#a85cda0dba6549828a9045e478e24609f">GetCopy</a>();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">double</span> m_aValue = 0.001;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">double</span> m_bValue = 5.0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#endif // EXPONENTIAL_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_exponential_html_a79eabfca357002f160b082a6df9f6f2b"><div class="ttname"><a href="class_exponential.html#a79eabfca357002f160b082a6df9f6f2b">Exponential::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00039">Exponential.h:39</a></div></div> +<div class="ttc" id="class_exponential_html_ae8e635b32b5d6a8226a3654aa639094f"><div class="ttname"><a href="class_exponential.html#ae8e635b32b5d6a8226a3654aa639094f">Exponential::Solve</a></div><div class="ttdeci">virtual bool Solve(double input, double timeStep)</div><div class="ttdoc">Calculates the exponential. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8cpp_source.html#l00132">Exponential.cpp:132</a></div></div> <div class="ttc" id="class_exponential_html_a0714869ee8815119a6d76431bac767ea"><div class="ttname"><a href="class_exponential.html#a0714869ee8815119a6d76431bac767ea">Exponential::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8cpp_source.html#l00084">Exponential.cpp:84</a></div></div> <div class="ttc" id="class_exponential_html_abdf1c3c1d8e7839fc2a8fc914acff68d"><div class="ttname"><a href="class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d">Exponential::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8cpp_source.html#l00073">Exponential.cpp:73</a></div></div> <div class="ttc" id="class_exponential_html_af5f172e2f7ae7df0fc79b44b55355339"><div class="ttname"><a href="class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339">Exponential::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8cpp_source.html#l00034">Exponential.cpp:34</a></div></div> <div class="ttc" id="class_exponential_html_a85cda0dba6549828a9045e478e24609f"><div class="ttname"><a href="class_exponential.html#a85cda0dba6549828a9045e478e24609f">Exponential::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8cpp_source.html#l00138">Exponential.cpp:138</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. . </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00033">Exponential.h:33</a></div></div> +<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00032">Exponential.h:32</a></div></div> <div class="ttc" id="class_exponential_form_html"><div class="ttname"><a href="class_exponential_form.html">ExponentialForm</a></div><div class="ttdoc">Form to edit the exponential control data. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_form_8h_source.html#l00031">ExponentialForm.h:31</a></div></div> -<div class="ttc" id="class_exponential_html_a540b1a43045b9bb7c96d32825d15c95e"><div class="ttname"><a href="class_exponential.html#a540b1a43045b9bb7c96d32825d15c95e">Exponential::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00041">Exponential.h:41</a></div></div> +<div class="ttc" id="class_exponential_html_a540b1a43045b9bb7c96d32825d15c95e"><div class="ttname"><a href="class_exponential.html#a540b1a43045b9bb7c96d32825d15c95e">Exponential::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00040">Exponential.h:40</a></div></div> <div class="ttc" id="_control_element_8h_html"><div class="ttname"><a href="_control_element_8h.html">ControlElement.h</a></div><div class="ttdoc">Base class of a control element. Provide general methods to other control classes. </div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_exponential_form_8cpp_source.html b/docs/doxygen/html/_exponential_form_8cpp_source.html index c506321..a4fb180 100644 --- a/docs/doxygen/html/_exponential_form_8cpp_source.html +++ b/docs/doxygen/html/_exponential_form_8cpp_source.html @@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('_exponential_form_8cpp_source.html','' </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_exponential_form_8h.html">ExponentialForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_exponential_8h.html">Exponential.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> ExponentialForm::ExponentialForm(wxWindow* parent, <a class="code" href="class_exponential.html">Exponential</a>* exponential) : <a class="code" href="class_exponential_form_base.html">ExponentialFormBase</a>(parent)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  wxString expSymbol = wxString::FromUTF8(<span class="stringliteral">"\xF0\x9D\x91\x92"</span>);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString superscriptCapitalB = wxString::FromUTF8(<span class="stringliteral">"\xE1\xB4\xAE"</span>);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  wxString superscriptSmallX = wxString::FromUTF8(<span class="stringliteral">"\xCB\xA3"</span>);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_staticTextExp->SetLabel(<span class="stringliteral">"y = A"</span> + expSymbol + superscriptCapitalB + superscriptSmallX);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  font.SetPointSize(14);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_staticTextExp->SetFont(font);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_parent = parent;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_exponential = exponential;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> a, b;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_exponential->GetValues(a, b);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_textCtrlAValue->SetValue(m_exponential->StringFromDouble(a));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_textCtrlBValue->SetValue(m_exponential->StringFromDouble(b));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  SetInitialSize();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  Layout();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> ExponentialForm::~ExponentialForm() {}</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keywordtype">void</span> ExponentialForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keywordtype">bool</span> ExponentialForm::ValidateData()</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">double</span> a, b;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">if</span>(!m_exponential->DoubleFromString(<span class="keyword">this</span>, m_textCtrlAValue->GetValue(), a,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"A value\"."</span>)))</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(!m_exponential->DoubleFromString(<span class="keyword">this</span>, m_textCtrlBValue->GetValue(), b,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"B value\"."</span>)))</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_exponential->SetValues(a, b);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div><div class="ttc" id="class_exponential_form_base_html"><div class="ttname"><a href="class_exponential_form_base.html">ExponentialFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00891">ElementForm.h:891</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. . </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00033">Exponential.h:33</a></div></div> +<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00032">Exponential.h:32</a></div></div> <div class="ttc" id="_exponential_8h_html"><div class="ttname"><a href="_exponential_8h.html">Exponential.h</a></div></div> <div class="ttc" id="_exponential_form_8h_html"><div class="ttname"><a href="_exponential_form_8h.html">ExponentialForm.h</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_exponential_form_8h_source.html b/docs/doxygen/html/_exponential_form_8h_source.html index e042b3f..8f4f99e 100644 --- a/docs/doxygen/html/_exponential_form_8h_source.html +++ b/docs/doxygen/html/_exponential_form_8h_source.html @@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('_exponential_form_8h_source.html',''); </div><!--header--> <div class="contents"> <a href="_exponential_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef EXPONENTIALFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define EXPONENTIALFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">class </span><a class="code" href="class_exponential.html">Exponential</a>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="class_exponential_form.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="class_exponential_form.html">ExponentialForm</a> : <span class="keyword">public</span> <a class="code" href="class_exponential_form_base.html">ExponentialFormBase</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="class_exponential_form.html">ExponentialForm</a>(wxWindow* parent, <a class="code" href="class_exponential.html">Exponential</a>* exponential);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_exponential_form.html">ExponentialForm</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_exponential.html">Exponential</a>* m_exponential = NULL;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> };</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#endif // EXPONENTIALFORM_H</span></div><div class="ttc" id="class_exponential_form_base_html"><div class="ttname"><a href="class_exponential_form_base.html">ExponentialFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00891">ElementForm.h:891</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. . </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00033">Exponential.h:33</a></div></div> +<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00032">Exponential.h:32</a></div></div> <div class="ttc" id="class_exponential_form_html"><div class="ttname"><a href="class_exponential_form.html">ExponentialForm</a></div><div class="ttdoc">Form to edit the exponential control data. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_form_8h_source.html#l00031">ExponentialForm.h:31</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_fault_8cpp_source.html b/docs/doxygen/html/_fault_8cpp_source.html index 82d6523..d78a93d 100644 --- a/docs/doxygen/html/_fault_8cpp_source.html +++ b/docs/doxygen/html/_fault_8cpp_source.html @@ -92,28 +92,28 @@ $(document).ready(function(){initNavTree('_fault_8cpp_source.html','');}); <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d">FAULT_LINE_GROUND</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00059">PowerElement.h:59</a></div></div> <div class="ttc" id="class_element_html_a7dce6c1b97facecf3e3b2f1555858b09"><div class="ttname"><a href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">Element::GetParentList</a></div><div class="ttdeci">virtual std::vector< Element * > GetParentList() const</div><div class="ttdoc">Get the parent list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00506">Element.h:506</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cb"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a></div><div class="ttdeci">FaultData</div><div class="ttdoc">Information about fault (type and location). </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00055">PowerElement.h:55</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="struct_bus_electrical_data_html"><div class="ttname"><a href="struct_bus_electrical_data.html">BusElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00024">Bus.h:24</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="class_element_html_a57c84a8e6eb80f0fea6e23cdd439d5aa"><div class="ttname"><a href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">Element::IsOnline</a></div><div class="ttdeci">bool IsOnline() const</div><div class="ttdoc">Checks if the element is online or offline. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00227">Element.h:227</a></div></div> <div class="ttc" id="class_fault_html_a4120f861b073783b4fb82385171fbd0f"><div class="ttname"><a href="class_fault.html#a4120f861b073783b4fb82385171fbd0f">Fault::RunFaultCalculation</a></div><div class="ttdeci">virtual bool RunFaultCalculation(double systemPowerBase)</div><div class="ttdoc">Calculate the fault of the system. Return true if was possible the calculation. </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8cpp_source.html#l00026">Fault.cpp:26</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00060">PowerElement.h:60</a></div></div> <div class="ttc" id="class_fault_html_a77baeae2c3388de3f7bbeabf52c99bef"><div class="ttname"><a href="class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef">Fault::Fault</a></div><div class="ttdeci">Fault()</div><div class="ttdoc">Default contructor. Use GetElementsFromList(std::vector<Element*> elementList). </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8cpp_source.html#l00023">Fault.cpp:23</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00057">PowerElement.h:57</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00056">PowerElement.h:56</a></div></div> -<div class="ttc" id="_fault_8h_html"><div class="ttname"><a href="_fault_8h.html">Fault.h</a></div><div class="ttdoc">Calculate the fault of the system and update the elements data. </div></div> +<div class="ttc" id="_fault_8h_html"><div class="ttname"><a href="_fault_8h.html">Fault.h</a></div></div> <div class="ttc" id="class_electric_calculation_html_af00a6599f2b0b4e35bf0f8c70195447c"><div class="ttname"><a href="class_electric_calculation.html#af00a6599f2b0b4e35bf0f8c70195447c">ElectricCalculation::InvertMatrix</a></div><div class="ttdeci">virtual bool InvertMatrix(std::vector< std::vector< std::complex< double > > > matrix, std::vector< std::vector< std::complex< double > > > &inverse)</div><div class="ttdoc">Invert a matrix. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8cpp_source.html#l00589">ElectricCalculation.cpp:589</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> <div class="ttc" id="class_electric_calculation_html_a939e6e75b5e0cb555a82b2f9ef59c59d"><div class="ttname"><a href="class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d">ElectricCalculation::GetYBus</a></div><div class="ttdeci">virtual bool GetYBus(std::vector< std::vector< std::complex< double > > > &yBus, double systemPowerBase, YBusSequence sequence=POSITIVE_SEQ, bool includeSyncMachines=false, bool allLoadsAsImpedances=false)</div><div class="ttdoc">Get the admittance matrix from the list of elements (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8cpp_source.html#l00073">ElectricCalculation.cpp:73</a></div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e">FAULT_2LINE_GROUND</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00058">PowerElement.h:58</a></div></div> <div class="ttc" id="class_fault_html_ac7942a558f3ecdb8c06ddb49567c487a"><div class="ttname"><a href="class_fault.html#ac7942a558f3ecdb8c06ddb49567c487a">Fault::RunSCPowerCalcutation</a></div><div class="ttdeci">virtual bool RunSCPowerCalcutation(double systemPowerBase)</div><div class="ttdoc">Calculate the short-circuit power of the system. Return true if was possible the calculation. </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8cpp_source.html#l00399">Fault.cpp:399</a></div></div> <div class="ttc" id="class_fault_html_a42019654142cd8187b314e43d70262eb"><div class="ttname"><a href="class_fault.html#a42019654142cd8187b314e43d70262eb">Fault::~Fault</a></div><div class="ttdeci">~Fault()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8cpp_source.html#l00025">Fault.cpp:25</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00061">PowerElement.h:61</a></div></div> <div class="ttc" id="class_electric_calculation_html_aff1a62936d87e61764b13f3b0212cf92"><div class="ttname"><a href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">ElectricCalculation::GetElementsFromList</a></div><div class="ttdeci">virtual void GetElementsFromList(std::vector< Element *> elementList)</div><div class="ttdoc">Separate the power elements from a generic list. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8cpp_source.html#l00025">ElectricCalculation.cpp:25</a></div></div> -<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> +<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> <div class="ttc" id="class_fault_html_af1bb91359dfe8df0251a2031957d3ddf"><div class="ttname"><a href="class_fault.html#af1bb91359dfe8df0251a2031957d3ddf">Fault::UpdateElementsFault</a></div><div class="ttdeci">virtual void UpdateElementsFault(double systemPowerBase)</div><div class="ttdoc">Update the data of the elements. </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8cpp_source.html#l00193">Fault.cpp:193</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_fault_8h.html b/docs/doxygen/html/_fault_8h.html index ecd4a49..c85b102 100644 --- a/docs/doxygen/html/_fault_8h.html +++ b/docs/doxygen/html/_fault_8h.html @@ -90,9 +90,6 @@ $(document).ready(function(){initNavTree('_fault_8h.html','');}); <div class="title">Fault.h File Reference</div> </div> </div><!--header--> <div class="contents"> - -<p>Calculate the fault of the system and update the elements data. -<a href="#details">More...</a></p> <div class="textblock"><code>#include "<a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>"</code><br /> </div> <p><a href="_fault_8h_source.html">Go to the source code of this file.</a></p> @@ -100,13 +97,10 @@ $(document).ready(function(){initNavTree('_fault_8h.html','');}); <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Classes</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_fault.html">Fault</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the fault of the system and update the elements data. <a href="class_fault.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Calculate the fault of the system and update the elements data. </p> - -<p class="definition">Definition in file <a class="el" href="_fault_8h_source.html">Fault.h</a>.</p> -</div></div><!-- contents --> +</div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> diff --git a/docs/doxygen/html/_fault_8h_source.html b/docs/doxygen/html/_fault_8h_source.html index 2b601bc..622d6a9 100644 --- a/docs/doxygen/html/_fault_8h_source.html +++ b/docs/doxygen/html/_fault_8h_source.html @@ -88,14 +88,14 @@ $(document).ready(function(){initNavTree('_fault_8h_source.html','');}); <div class="title">Fault.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_fault_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef FAULT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define FAULT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="class_fault.html"> 30</a></span> <span class="keyword">class </span><a class="code" href="class_fault.html">Fault</a> : <span class="keyword">public</span> <a class="code" href="class_electric_calculation.html">ElectricCalculation</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef">Fault</a>(std::vector<Element*> elementList);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef">Fault</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_fault.html#a42019654142cd8187b314e43d70262eb">~Fault</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_fault.html#a4120f861b073783b4fb82385171fbd0f">RunFaultCalculation</a>(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_fault.html#ac7942a558f3ecdb8c06ddb49567c487a">RunSCPowerCalcutation</a>(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_fault.html#af1bb91359dfe8df0251a2031957d3ddf">UpdateElementsFault</a>(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="class_fault.html#a3c2f14cd1da46cb88109fdb172d959b0"> 71</a></span>  <span class="keyword">virtual</span> wxString <a class="code" href="class_fault.html#a3c2f14cd1da46cb88109fdb172d959b0">GetErrorMessage</a>() { <span class="keywordflow">return</span> m_errorMsg; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  wxString m_errorMsg = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">double</span> m_systemPowerBase;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  std::vector<std::vector<std::complex<double> > > m_zBusPos;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  std::vector<std::vector<std::complex<double> > > m_zBusNeg;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  std::vector<std::vector<std::complex<double> > > m_zBusZero;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::vector<std::complex<double> > m_posFaultVoltagePos;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  std::vector<std::complex<double> > m_posFaultVoltageNeg;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  std::vector<std::complex<double> > m_posFaultVoltageZero;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  std::complex<double> m_fCurrentA;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::complex<double> m_fCurrentB;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  std::complex<double> m_fCurrentC;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  std::vector<std::complex<double> > m_posFaultVoltageA;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  std::vector<std::complex<double> > m_posFaultVoltageB;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  std::vector<std::complex<double> > m_posFaultVoltageC;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> };</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#endif // FAULT_H</span></div><div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div></div> +<a href="_fault_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef FAULT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define FAULT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="class_fault.html"> 30</a></span> <span class="keyword">class </span><a class="code" href="class_fault.html">Fault</a> : <span class="keyword">public</span> <a class="code" href="class_electric_calculation.html">ElectricCalculation</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef">Fault</a>(std::vector<Element*> elementList);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef">Fault</a>();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_fault.html#a42019654142cd8187b314e43d70262eb">~Fault</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_fault.html#a4120f861b073783b4fb82385171fbd0f">RunFaultCalculation</a>(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_fault.html#ac7942a558f3ecdb8c06ddb49567c487a">RunSCPowerCalcutation</a>(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_fault.html#af1bb91359dfe8df0251a2031957d3ddf">UpdateElementsFault</a>(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="class_fault.html#a3c2f14cd1da46cb88109fdb172d959b0"> 71</a></span>  <span class="keyword">virtual</span> wxString <a class="code" href="class_fault.html#a3c2f14cd1da46cb88109fdb172d959b0">GetErrorMessage</a>() { <span class="keywordflow">return</span> m_errorMsg; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  wxString m_errorMsg = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">double</span> m_systemPowerBase;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  std::vector<std::vector<std::complex<double> > > m_zBusPos;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  std::vector<std::vector<std::complex<double> > > m_zBusNeg;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  std::vector<std::vector<std::complex<double> > > m_zBusZero;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::vector<std::complex<double> > m_posFaultVoltagePos;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  std::vector<std::complex<double> > m_posFaultVoltageNeg;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  std::vector<std::complex<double> > m_posFaultVoltageZero;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  std::complex<double> m_fCurrentA;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::complex<double> m_fCurrentB;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  std::complex<double> m_fCurrentC;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  std::vector<std::complex<double> > m_posFaultVoltageA;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  std::vector<std::complex<double> > m_posFaultVoltageB;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  std::vector<std::complex<double> > m_posFaultVoltageC;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> };</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#endif // FAULT_H</span></div><div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div></div> <div class="ttc" id="class_fault_html_a3c2f14cd1da46cb88109fdb172d959b0"><div class="ttname"><a href="class_fault.html#a3c2f14cd1da46cb88109fdb172d959b0">Fault::GetErrorMessage</a></div><div class="ttdeci">virtual wxString GetErrorMessage()</div><div class="ttdoc">Get the error message generated in RunFaultCalculation(double systemPowerBase). </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8h_source.html#l00071">Fault.h:71</a></div></div> <div class="ttc" id="class_fault_html_a4120f861b073783b4fb82385171fbd0f"><div class="ttname"><a href="class_fault.html#a4120f861b073783b4fb82385171fbd0f">Fault::RunFaultCalculation</a></div><div class="ttdeci">virtual bool RunFaultCalculation(double systemPowerBase)</div><div class="ttdoc">Calculate the fault of the system. Return true if was possible the calculation. </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8cpp_source.html#l00026">Fault.cpp:26</a></div></div> <div class="ttc" id="class_fault_html_a77baeae2c3388de3f7bbeabf52c99bef"><div class="ttname"><a href="class_fault.html#a77baeae2c3388de3f7bbeabf52c99bef">Fault::Fault</a></div><div class="ttdeci">Fault()</div><div class="ttdoc">Default contructor. Use GetElementsFromList(std::vector<Element*> elementList). </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8cpp_source.html#l00023">Fault.cpp:23</a></div></div> -<div class="ttc" id="class_fault_html"><div class="ttname"><a href="class_fault.html">Fault</a></div><div class="ttdef"><b>Definition:</b> <a href="_fault_8h_source.html#l00030">Fault.h:30</a></div></div> +<div class="ttc" id="class_fault_html"><div class="ttname"><a href="class_fault.html">Fault</a></div><div class="ttdoc">Calculate the fault of the system and update the elements data. </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8h_source.html#l00030">Fault.h:30</a></div></div> <div class="ttc" id="class_fault_html_ac7942a558f3ecdb8c06ddb49567c487a"><div class="ttname"><a href="class_fault.html#ac7942a558f3ecdb8c06ddb49567c487a">Fault::RunSCPowerCalcutation</a></div><div class="ttdeci">virtual bool RunSCPowerCalcutation(double systemPowerBase)</div><div class="ttdoc">Calculate the short-circuit power of the system. Return true if was possible the calculation. </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8cpp_source.html#l00399">Fault.cpp:399</a></div></div> <div class="ttc" id="class_fault_html_a42019654142cd8187b314e43d70262eb"><div class="ttname"><a href="class_fault.html#a42019654142cd8187b314e43d70262eb">Fault::~Fault</a></div><div class="ttdeci">~Fault()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8cpp_source.html#l00025">Fault.cpp:25</a></div></div> -<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> +<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> <div class="ttc" id="class_fault_html_af1bb91359dfe8df0251a2031957d3ddf"><div class="ttname"><a href="class_fault.html#af1bb91359dfe8df0251a2031957d3ddf">Fault::UpdateElementsFault</a></div><div class="ttdeci">virtual void UpdateElementsFault(double systemPowerBase)</div><div class="ttdoc">Update the data of the elements. </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8cpp_source.html#l00193">Fault.cpp:193</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_file_handing_8cpp_source.html b/docs/doxygen/html/_file_handing_8cpp_source.html index 983eb4f..5f11b75 100644 --- a/docs/doxygen/html/_file_handing_8cpp_source.html +++ b/docs/doxygen/html/_file_handing_8cpp_source.html @@ -89,20 +89,20 @@ $(document).ready(function(){initNavTree('_file_handing_8cpp_source.html','');}) </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_file_handing_8h.html">FileHanding.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> FileHanding::~FileHanding() {}</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> FileHanding::FileHanding(<a class="code" href="class_workspace.html">Workspace</a>* workspace) { m_workspace = workspace; }</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> FileHanding::FileHanding(<a class="code" href="class_control_editor.html">ControlEditor</a>* controlEditor) { m_controlEditor = controlEditor; }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> FileHanding::FileHanding() {}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keywordtype">void</span> FileHanding::SaveProject(wxFileName path)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="comment">// Erase the file (if exists or not) and write the initial data</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  std::ofstream writeProjectsFile(path.GetFullPath());</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  writeProjectsFile.close();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  rapidxml::xml_document<> doc;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  rapidxml::file<> xmlFile(path.GetFullPath().mb_str());</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  doc.parse<0>(xmlFile.data());</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  rapidxml::xml_node<>* decl = doc.allocate_node(rapidxml::node_declaration);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  rapidxml::xml_attribute<>* ver = doc.allocate_attribute(<span class="stringliteral">"version"</span>, <span class="stringliteral">"1.0"</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  rapidxml::xml_attribute<>* encoding = doc.allocate_attribute(<span class="stringliteral">"encoding"</span>, <span class="stringliteral">"utf-8"</span>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  decl->append_attribute(ver);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  decl->append_attribute(encoding);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  doc.append_node(decl);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  rapidxml::xml_node<>* rootNode = doc.allocate_node(rapidxml::node_element, <span class="stringliteral">"Project"</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  doc.append_node(rootNode);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  rapidxml::xml_node<>* projectNameNode = AppendNode(doc, rootNode, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  SetNodeValue(doc, projectNameNode, path.GetName());</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">auto</span> elementsNode = AppendNode(doc, rootNode, <span class="stringliteral">"Elements"</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// Save all the data</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="class_electric_calculation.html">ElectricCalculation</a> allElements;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  allElements.<a class="code" href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">GetElementsFromList</a>(m_workspace->GetElementList());</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">//{ Buses</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">auto</span> busesNode = AppendNode(doc, elementsNode, <span class="stringliteral">"BusList"</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">auto</span> busList = allElements.<a class="code" href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24">GetBusList</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)busList.size(); i++) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_bus.html">Bus</a>* bus = busList[i];</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">auto</span> busNode = AppendNode(doc, busesNode, <span class="stringliteral">"Bus"</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  SetNodeAttribute(doc, busNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, busNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  SetNodeValue(doc, posX, bus-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  SetNodeValue(doc, posY, bus-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  SetNodeValue(doc, width, bus-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  SetNodeValue(doc, height, bus-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  SetNodeValue(doc, angle, bus-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, busNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">auto</span> nominalVoltage = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalVoltage"</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  SetNodeValue(doc, nominalVoltage, data.nominalVoltage);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  SetNodeAttribute(doc, nominalVoltage, <span class="stringliteral">"UnitID"</span>, data.nominalVoltageUnit);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">auto</span> isVoltageControlled = AppendNode(doc, electricalProp, <span class="stringliteral">"IsVoltageControlled"</span>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  SetNodeValue(doc, isVoltageControlled, data.isVoltageControlled);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">auto</span> controlledVoltage = AppendNode(doc, electricalProp, <span class="stringliteral">"ControlledVoltage"</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  SetNodeValue(doc, controlledVoltage, data.controlledVoltage);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  SetNodeAttribute(doc, controlledVoltage, <span class="stringliteral">"Choice"</span>, data.controlledVoltageUnitChoice);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">auto</span> slackBus = AppendNode(doc, electricalProp, <span class="stringliteral">"SlackBus"</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  SetNodeValue(doc, slackBus, data.slackBus);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">auto</span> fault = AppendNode(doc, electricalProp, <span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">auto</span> hasFault = AppendNode(doc, fault, <span class="stringliteral">"HasFault"</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  SetNodeValue(doc, hasFault, data.hasFault);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">auto</span> faultType = AppendNode(doc, fault, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  SetNodeValue(doc, faultType, data.faultType);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">auto</span> faultLocation = AppendNode(doc, fault, <span class="stringliteral">"Location"</span>);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  SetNodeValue(doc, faultLocation, data.faultLocation);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">auto</span> faultResistance = AppendNode(doc, fault, <span class="stringliteral">"Resistance"</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  SetNodeValue(doc, faultResistance, data.faultResistance);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">auto</span> faultReactance = AppendNode(doc, fault, <span class="stringliteral">"Reactance"</span>);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  SetNodeValue(doc, faultReactance, data.faultReactance);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">auto</span> stability = AppendNode(doc, electricalProp, <span class="stringliteral">"Stability"</span>);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">auto</span> plotBus = AppendNode(doc, stability, <span class="stringliteral">"Plot"</span>);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  SetNodeValue(doc, plotBus, data.plotBus);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">auto</span> stabHasFault = AppendNode(doc, stability, <span class="stringliteral">"HasFault"</span>);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  SetNodeValue(doc, stabHasFault, data.stabHasFault);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">auto</span> stabFaultTime = AppendNode(doc, stability, <span class="stringliteral">"FaultTime"</span>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  SetNodeValue(doc, stabFaultTime, data.stabFaultTime);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">auto</span> stabFaultLength = AppendNode(doc, stability, <span class="stringliteral">"FaultLength"</span>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  SetNodeValue(doc, stabFaultLength, data.stabFaultLength);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">auto</span> stabFaultResistance = AppendNode(doc, stability, <span class="stringliteral">"FaultResistance"</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  SetNodeValue(doc, stabFaultResistance, data.stabFaultResistance);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">auto</span> stabFaultReactance = AppendNode(doc, stability, <span class="stringliteral">"FaultReactance"</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  SetNodeValue(doc, stabFaultReactance, data.stabFaultReactance);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  data.number = i;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  } <span class="comment">//}</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">//{ Capacitor</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">auto</span> capacitorsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"CapacitorList"</span>);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">auto</span> capacitorList = allElements.<a class="code" href="class_electric_calculation.html#a4ddabc6210146ae1ccae5f6911095bfd">GetCapacitorList</a>();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)capacitorList.size(); i++) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = capacitorList[i];</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">auto</span> capacitorNode = AppendNode(doc, capacitorsNode, <span class="stringliteral">"Capacitor"</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  SetNodeAttribute(doc, capacitorNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, capacitorNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  SetNodeValue(doc, posX, capacitor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  SetNodeValue(doc, posY, capacitor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  SetNodeValue(doc, width, capacitor-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  SetNodeValue(doc, height, capacitor-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  SetNodeValue(doc, angle, capacitor-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, cadProp, <span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  SetNodeValue(doc, nodePosX, capacitor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  SetNodeValue(doc, nodePosY, capacitor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, cadProp, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(capacitor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(parent) SetNodeValue(doc, parentID, parent->GetElectricalData().number);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = capacitor->GetElectricalData();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, capacitorNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  SetNodeValue(doc, isOnline, capacitor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">auto</span> reactivePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  SetNodeValue(doc, reactivePower, data.reactivePower);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  SetNodeAttribute(doc, reactivePower, <span class="stringliteral">"UnitID"</span>, data.reactivePowerUnit);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">auto</span> switchingList = AppendNode(doc, electricalProp, <span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData = capacitor-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); j++) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">auto</span> switching = AppendNode(doc, switchingList, <span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  SetNodeAttribute(doc, switching, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keyword">auto</span> swType = AppendNode(doc, switching, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  SetNodeValue(doc, swType, swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[j]);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keyword">auto</span> swTime = AppendNode(doc, switching, <span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  SetNodeValue(doc, swTime, swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[j]);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  } <span class="comment">//}</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">//{ IndMotor</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">auto</span> indMotorsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"IndMotorList"</span>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keyword">auto</span> indMotorList = allElements.<a class="code" href="class_electric_calculation.html#a906ce639a5d6c5d7946fe8824f1b4f1b">GetIndMotorList</a>();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)indMotorList.size(); i++) {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = indMotorList[i];</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keyword">auto</span> indMotorNode = AppendNode(doc, indMotorsNode, <span class="stringliteral">"IndMotor"</span>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  SetNodeAttribute(doc, indMotorNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, indMotorNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  SetNodeValue(doc, posX, indMotor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  SetNodeValue(doc, posY, indMotor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  SetNodeValue(doc, width, indMotor-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  SetNodeValue(doc, height, indMotor-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  SetNodeValue(doc, angle, indMotor-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, cadProp, <span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  SetNodeValue(doc, nodePosX, indMotor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  SetNodeValue(doc, nodePosY, indMotor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, cadProp, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(indMotor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>(parent) SetNodeValue(doc, parentID, parent->GetElectricalData().number);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data = indMotor->GetElectricalData();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, indMotorNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  SetNodeValue(doc, isOnline, indMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keyword">auto</span> activePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  SetNodeValue(doc, activePower, data.activePower);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  SetNodeAttribute(doc, activePower, <span class="stringliteral">"UnitID"</span>, data.activePowerUnit);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keyword">auto</span> reactivePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  SetNodeValue(doc, reactivePower, data.reactivePower);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  SetNodeAttribute(doc, reactivePower, <span class="stringliteral">"UnitID"</span>, data.reactivePowerUnit);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  } <span class="comment">//}</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">//{ Inductor</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keyword">auto</span> inductorsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"InductorList"</span>);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keyword">auto</span> inductorList = allElements.<a class="code" href="class_electric_calculation.html#a8709a452d684d4224d32591c281ae0ed">GetInductorList</a>();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)inductorList.size(); i++) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = inductorList[i];</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">auto</span> inductorNode = AppendNode(doc, inductorsNode, <span class="stringliteral">"Inductor"</span>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  SetNodeAttribute(doc, inductorNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, inductorNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  SetNodeValue(doc, posX, inductor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  SetNodeValue(doc, posY, inductor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  SetNodeValue(doc, width, inductor-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  SetNodeValue(doc, height, inductor-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  SetNodeValue(doc, angle, inductor-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, cadProp, <span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  SetNodeValue(doc, nodePosX, inductor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  SetNodeValue(doc, nodePosY, inductor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, cadProp, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(inductor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">if</span>(parent) SetNodeValue(doc, parentID, parent->GetElectricalData().number);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = inductor->GetElectricalData();</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, inductorNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  SetNodeValue(doc, isOnline, inductor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keyword">auto</span> reactivePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  SetNodeValue(doc, reactivePower, data.reactivePower);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  SetNodeAttribute(doc, reactivePower, <span class="stringliteral">"UnitID"</span>, data.reactivePowerUnit);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keyword">auto</span> switchingList = AppendNode(doc, electricalProp, <span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData = inductor-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); j++) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keyword">auto</span> switching = AppendNode(doc, switchingList, <span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  SetNodeAttribute(doc, switching, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keyword">auto</span> swType = AppendNode(doc, switching, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  SetNodeValue(doc, swType, swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[j]);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keyword">auto</span> swTime = AppendNode(doc, switching, <span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  SetNodeValue(doc, swTime, swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[j]);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  } <span class="comment">//}</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="comment">//{ Line</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keyword">auto</span> linesNode = AppendNode(doc, elementsNode, <span class="stringliteral">"LineList"</span>);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keyword">auto</span> lineList = allElements.<a class="code" href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48">GetLineList</a>();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)lineList.size(); i++) {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="class_line.html">Line</a>* line = lineList[i];</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keyword">auto</span> lineNode = AppendNode(doc, linesNode, <span class="stringliteral">"Line"</span>);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  SetNodeAttribute(doc, lineNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, lineNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, cadProp, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keyword">auto</span> ptList = line-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordtype">int</span> nodeID = 0;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)ptList.size(); j++) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span>((j != 1) && (j != (int)ptList.size() - 2)) {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, nodeList, <span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  SetNodeAttribute(doc, nodePos, <span class="stringliteral">"ID"</span>, nodeID);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  SetNodeValue(doc, nodePosX, ptList[j].m_x);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  SetNodeValue(doc, nodePosY, ptList[j].m_y);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  nodeID++;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keyword">auto</span> parentIDList = AppendNode(doc, cadProp, <span class="stringliteral">"ParentIDList"</span>);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); j++) {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(line-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[j]);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, parentIDList, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  SetNodeAttribute(doc, parentID, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  SetNodeValue(doc, parentID, parent->GetElectricalData().number);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = line->GetElectricalData();</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, lineNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  SetNodeValue(doc, isOnline, line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keyword">auto</span> nominalVoltage = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalVoltage"</span>);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  SetNodeValue(doc, nominalVoltage, data.nominalVoltage);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  SetNodeAttribute(doc, nominalVoltage, <span class="stringliteral">"UnitID"</span>, data.nominalVoltageUnit);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">auto</span> nominalPower = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  SetNodeValue(doc, nominalPower, data.nominalPower);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  SetNodeAttribute(doc, nominalPower, <span class="stringliteral">"UnitID"</span>, data.nominalPowerUnit);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keyword">auto</span> resistance = AppendNode(doc, electricalProp, <span class="stringliteral">"Resistance"</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  SetNodeValue(doc, resistance, data.resistance);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  SetNodeAttribute(doc, resistance, <span class="stringliteral">"UnitID"</span>, data.resistanceUnit);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keyword">auto</span> indReactance = AppendNode(doc, electricalProp, <span class="stringliteral">"IndReactance"</span>);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  SetNodeValue(doc, indReactance, data.indReactance);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  SetNodeAttribute(doc, indReactance, <span class="stringliteral">"UnitID"</span>, data.indReactanceUnit);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">auto</span> capSusceptance = AppendNode(doc, electricalProp, <span class="stringliteral">"CapSusceptance"</span>);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  SetNodeValue(doc, capSusceptance, data.capSusceptance);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  SetNodeAttribute(doc, capSusceptance, <span class="stringliteral">"UnitID"</span>, data.capSusceptanceUnit);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keyword">auto</span> lineSize = AppendNode(doc, electricalProp, <span class="stringliteral">"LineSize"</span>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  SetNodeValue(doc, lineSize, data.lineSize);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keyword">auto</span> useLinePower = AppendNode(doc, electricalProp, <span class="stringliteral">"UseLinePower"</span>);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  SetNodeValue(doc, useLinePower, data.useLinePower);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keyword">auto</span> fault = AppendNode(doc, electricalProp, <span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keyword">auto</span> zeroResistance = AppendNode(doc, fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  SetNodeValue(doc, zeroResistance, data.zeroResistance);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keyword">auto</span> zeroIndReactance = AppendNode(doc, fault, <span class="stringliteral">"ZeroIndReactance"</span>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  SetNodeValue(doc, zeroIndReactance, data.zeroIndReactance);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keyword">auto</span> zeroCapSusceptance = AppendNode(doc, fault, <span class="stringliteral">"ZeroCapSusceptance"</span>);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  SetNodeValue(doc, zeroCapSusceptance, data.zeroCapSusceptance);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keyword">auto</span> switchingList = AppendNode(doc, electricalProp, <span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData = line-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); j++) {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keyword">auto</span> switching = AppendNode(doc, switchingList, <span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  SetNodeAttribute(doc, switching, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keyword">auto</span> swType = AppendNode(doc, switching, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  SetNodeValue(doc, swType, swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[j]);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keyword">auto</span> swTime = AppendNode(doc, switching, <span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  SetNodeValue(doc, swTime, swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[j]);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  } <span class="comment">//}</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="comment">//{ Load</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keyword">auto</span> loadsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"LoadList"</span>);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keyword">auto</span> loadList = allElements.<a class="code" href="class_electric_calculation.html#aa5e278a1c5ba1b6159c21ae2ff2b23b4">GetLoadList</a>();</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)loadList.size(); i++) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="class_load.html">Load</a>* load = loadList[i];</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keyword">auto</span> loadNode = AppendNode(doc, loadsNode, <span class="stringliteral">"Load"</span>);</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  SetNodeAttribute(doc, loadNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, loadNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  SetNodeValue(doc, posX, load-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  SetNodeValue(doc, posY, load-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  SetNodeValue(doc, width, load-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  SetNodeValue(doc, height, load-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  SetNodeValue(doc, angle, load-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, cadProp, <span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  SetNodeValue(doc, nodePosX, load-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  SetNodeValue(doc, nodePosY, load-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, cadProp, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(load-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">if</span>(parent) SetNodeValue(doc, parentID, parent->GetElectricalData().number);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = load->GetElectricalData();</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, loadNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  SetNodeValue(doc, isOnline, load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keyword">auto</span> activePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  SetNodeValue(doc, activePower, data.activePower);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  SetNodeAttribute(doc, activePower, <span class="stringliteral">"UnitID"</span>, data.activePowerUnit);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keyword">auto</span> reactivePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  SetNodeValue(doc, reactivePower, data.reactivePower);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  SetNodeAttribute(doc, reactivePower, <span class="stringliteral">"UnitID"</span>, data.reactivePowerUnit);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keyword">auto</span> loadType = AppendNode(doc, electricalProp, <span class="stringliteral">"LoadType"</span>);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  SetNodeValue(doc, loadType, data.loadType);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keyword">auto</span> switchingList = AppendNode(doc, electricalProp, <span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData = load-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); j++) {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keyword">auto</span> switching = AppendNode(doc, switchingList, <span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  SetNodeAttribute(doc, switching, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keyword">auto</span> swType = AppendNode(doc, switching, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  SetNodeValue(doc, swType, swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[j]);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keyword">auto</span> swTime = AppendNode(doc, switching, <span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  SetNodeValue(doc, swTime, swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[j]);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  } <span class="comment">//}</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="comment">//{ SyncGenerator</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keyword">auto</span> syncGeneratorsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"SyncGeneratorList"</span>);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keyword">auto</span> syncGeneratorList = allElements.<a class="code" href="class_electric_calculation.html#ad8719b10c3c4b85b316d3daa71064840">GetSyncGeneratorList</a>();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)syncGeneratorList.size(); i++) {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = syncGeneratorList[i];</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keyword">auto</span> syncGeneratorNode = AppendNode(doc, syncGeneratorsNode, <span class="stringliteral">"SyncGenerator"</span>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  SetNodeAttribute(doc, syncGeneratorNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, syncGeneratorNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  SetNodeValue(doc, posX, syncGenerator-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  SetNodeValue(doc, posY, syncGenerator-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  SetNodeValue(doc, width, syncGenerator-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  SetNodeValue(doc, height, syncGenerator-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  SetNodeValue(doc, angle, syncGenerator-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, cadProp, <span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  SetNodeValue(doc, nodePosX, syncGenerator-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  SetNodeValue(doc, nodePosY, syncGenerator-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, cadProp, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span>(parent) SetNodeValue(doc, parentID, parent->GetElectricalData().number);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> </div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, syncGeneratorNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  SetNodeValue(doc, isOnline, syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keyword">auto</span> nominalPower = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  SetNodeValue(doc, nominalPower, data.nominalPower);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  SetNodeAttribute(doc, nominalPower, <span class="stringliteral">"UnitID"</span>, data.nominalPowerUnit);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keyword">auto</span> nominalVoltage = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalVoltage"</span>);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  SetNodeValue(doc, nominalVoltage, data.nominalVoltage);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  SetNodeAttribute(doc, nominalVoltage, <span class="stringliteral">"UnitID"</span>, data.nominalVoltageUnit);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keyword">auto</span> activePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  SetNodeValue(doc, activePower, data.activePower);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  SetNodeAttribute(doc, activePower, <span class="stringliteral">"UnitID"</span>, data.activePowerUnit);</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keyword">auto</span> reactivePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  SetNodeValue(doc, reactivePower, data.reactivePower);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  SetNodeAttribute(doc, reactivePower, <span class="stringliteral">"UnitID"</span>, data.reactivePowerUnit);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keyword">auto</span> haveMaxReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"HaveMaxReactive"</span>);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  SetNodeValue(doc, haveMaxReactive, data.haveMaxReactive);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keyword">auto</span> maxReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"MaxReactive"</span>);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  SetNodeValue(doc, maxReactive, data.maxReactive);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  SetNodeAttribute(doc, maxReactive, <span class="stringliteral">"UnitID"</span>, data.maxReactiveUnit);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keyword">auto</span> haveMinReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"HaveMinReactive"</span>);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  SetNodeValue(doc, haveMinReactive, data.haveMinReactive);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keyword">auto</span> minReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"MinReactive"</span>);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  SetNodeValue(doc, minReactive, data.minReactive);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  SetNodeAttribute(doc, minReactive, <span class="stringliteral">"UnitID"</span>, data.minReactiveUnit);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keyword">auto</span> useMachineBase = AppendNode(doc, electricalProp, <span class="stringliteral">"UseMachineBase"</span>);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  SetNodeValue(doc, useMachineBase, data.useMachineBase);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span> </div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keyword">auto</span> fault = AppendNode(doc, electricalProp, <span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keyword">auto</span> positiveResistance = AppendNode(doc, fault, <span class="stringliteral">"PositiveResistance"</span>);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  SetNodeValue(doc, positiveResistance, data.positiveResistance);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keyword">auto</span> positiveReactance = AppendNode(doc, fault, <span class="stringliteral">"PositiveReactance"</span>);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  SetNodeValue(doc, positiveReactance, data.positiveReactance);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keyword">auto</span> negativeResistance = AppendNode(doc, fault, <span class="stringliteral">"NegativeResistance"</span>);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  SetNodeValue(doc, negativeResistance, data.negativeResistance);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keyword">auto</span> negativeReactance = AppendNode(doc, fault, <span class="stringliteral">"NegativeReactance"</span>);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  SetNodeValue(doc, negativeReactance, data.negativeReactance);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keyword">auto</span> zeroResistance = AppendNode(doc, fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  SetNodeValue(doc, zeroResistance, data.zeroResistance);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keyword">auto</span> zeroReactance = AppendNode(doc, fault, <span class="stringliteral">"ZeroReactance"</span>);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  SetNodeValue(doc, zeroReactance, data.zeroReactance);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keyword">auto</span> groundResistance = AppendNode(doc, fault, <span class="stringliteral">"GroundResistance"</span>);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  SetNodeValue(doc, groundResistance, data.groundResistance);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keyword">auto</span> groundReactance = AppendNode(doc, fault, <span class="stringliteral">"GroundReactance"</span>);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  SetNodeValue(doc, groundReactance, data.groundReactance);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keyword">auto</span> groundNeutral = AppendNode(doc, fault, <span class="stringliteral">"GroundNeutral"</span>);</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  SetNodeValue(doc, groundNeutral, data.groundNeutral);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span> </div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keyword">auto</span> stability = AppendNode(doc, electricalProp, <span class="stringliteral">"Stability"</span>);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keyword">auto</span> plotSyncMachine = AppendNode(doc, stability, <span class="stringliteral">"PlotSyncMachine"</span>);</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  SetNodeValue(doc, plotSyncMachine, data.plotSyncMachine);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keyword">auto</span> inertia = AppendNode(doc, stability, <span class="stringliteral">"Inertia"</span>);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  SetNodeValue(doc, inertia, data.inertia);</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keyword">auto</span> damping = AppendNode(doc, stability, <span class="stringliteral">"Damping"</span>);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  SetNodeValue(doc, damping, data.damping);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keyword">auto</span> useAVR = AppendNode(doc, stability, <span class="stringliteral">"UseAVR"</span>);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  SetNodeValue(doc, useAVR, data.useAVR);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keyword">auto</span> useSpeedGovernor = AppendNode(doc, stability, <span class="stringliteral">"UseSpeedGovernor"</span>);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  SetNodeValue(doc, useSpeedGovernor, data.useSpeedGovernor);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keyword">auto</span> armResistance = AppendNode(doc, stability, <span class="stringliteral">"ArmResistance"</span>);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  SetNodeValue(doc, armResistance, data.armResistance);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keyword">auto</span> potierReactance = AppendNode(doc, stability, <span class="stringliteral">"PotierReactance"</span>);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  SetNodeValue(doc, potierReactance, data.potierReactance);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keyword">auto</span> satFactor = AppendNode(doc, stability, <span class="stringliteral">"SatFactor"</span>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  SetNodeValue(doc, satFactor, data.satFactor);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keyword">auto</span> syncXd = AppendNode(doc, stability, <span class="stringliteral">"SyncXd"</span>);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  SetNodeValue(doc, syncXd, data.syncXd);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keyword">auto</span> syncXq = AppendNode(doc, stability, <span class="stringliteral">"SyncXq"</span>);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  SetNodeValue(doc, syncXq, data.syncXq);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keyword">auto</span> transXd = AppendNode(doc, stability, <span class="stringliteral">"TransXd"</span>);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  SetNodeValue(doc, transXd, data.transXd);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keyword">auto</span> transXq = AppendNode(doc, stability, <span class="stringliteral">"TransXq"</span>);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  SetNodeValue(doc, transXq, data.transXq);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keyword">auto</span> transTd0 = AppendNode(doc, stability, <span class="stringliteral">"TransTd0"</span>);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  SetNodeValue(doc, transTd0, data.transTd0);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keyword">auto</span> transTq0 = AppendNode(doc, stability, <span class="stringliteral">"TransTq0"</span>);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  SetNodeValue(doc, transTq0, data.transTq0);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keyword">auto</span> subXd = AppendNode(doc, stability, <span class="stringliteral">"SubXd"</span>);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  SetNodeValue(doc, subXd, data.subXd);</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keyword">auto</span> subXq = AppendNode(doc, stability, <span class="stringliteral">"SubXq"</span>);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  SetNodeValue(doc, subXq, data.subXq);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keyword">auto</span> subTd0 = AppendNode(doc, stability, <span class="stringliteral">"SubTd0"</span>);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  SetNodeValue(doc, subTd0, data.subTd0);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keyword">auto</span> subTq0 = AppendNode(doc, stability, <span class="stringliteral">"SubTq0"</span>);</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  SetNodeValue(doc, subTq0, data.subTq0);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> </div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keyword">auto</span> avr = AppendNode(doc, stability, <span class="stringliteral">"AVR"</span>);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">if</span>(data.avr) SaveControlElements(doc, avr, data.avr);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span> </div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keyword">auto</span> speedGov = AppendNode(doc, stability, <span class="stringliteral">"SpeedGovernor"</span>);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">if</span>(data.speedGov) SaveControlElements(doc, speedGov, data.speedGov);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span> </div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keyword">auto</span> switchingList = AppendNode(doc, electricalProp, <span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData = syncGenerator-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); j++) {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keyword">auto</span> switching = AppendNode(doc, switchingList, <span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  SetNodeAttribute(doc, switching, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keyword">auto</span> swType = AppendNode(doc, switching, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  SetNodeValue(doc, swType, swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[j]);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keyword">auto</span> swTime = AppendNode(doc, switching, <span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  SetNodeValue(doc, swTime, swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[j]);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  } <span class="comment">//}</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> </div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="comment">//{ SyncMotor</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keyword">auto</span> syncMotorsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"SyncMotorList"</span>);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keyword">auto</span> syncMotorList = allElements.<a class="code" href="class_electric_calculation.html#ae9b5e9b51615141e88de0a0f99a7741e">GetSyncMotorList</a>();</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)syncMotorList.size(); i++) {</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = syncMotorList[i];</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keyword">auto</span> syncMotorNode = AppendNode(doc, syncMotorsNode, <span class="stringliteral">"SyncMotor"</span>);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  SetNodeAttribute(doc, syncMotorNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, syncMotorNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  SetNodeValue(doc, posX, syncMotor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  SetNodeValue(doc, posY, syncMotor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  SetNodeValue(doc, width, syncMotor-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  SetNodeValue(doc, height, syncMotor-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  SetNodeValue(doc, angle, syncMotor-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="keyword">auto</span> nodePos = AppendNode(doc, cadProp, <span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keyword">auto</span> nodePosX = AppendNode(doc, nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  SetNodeValue(doc, nodePosX, syncMotor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keyword">auto</span> nodePosY = AppendNode(doc, nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  SetNodeValue(doc, nodePosY, syncMotor-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, cadProp, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(syncMotor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">if</span>(parent) SetNodeValue(doc, parentID, parent->GetElectricalData().number);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> </div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = syncMotor->GetElectricalData();</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, syncMotorNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  SetNodeValue(doc, isOnline, syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keyword">auto</span> nominalPower = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  SetNodeValue(doc, nominalPower, data.nominalPower);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  SetNodeAttribute(doc, nominalPower, <span class="stringliteral">"UnitID"</span>, data.nominalPowerUnit);</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="comment">// auto nominalVoltage = AppendNode(doc, electricalProp, "NominalVoltage");</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="comment">// SetNodeValue(doc, nominalVoltage, data.nominalVoltage);</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="comment">// SetNodeAttribute(doc, nominalVoltage, "UnitID", data.nominalVoltageUnit);</span></div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keyword">auto</span> activePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  SetNodeValue(doc, activePower, data.activePower);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  SetNodeAttribute(doc, activePower, <span class="stringliteral">"UnitID"</span>, data.activePowerUnit);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keyword">auto</span> reactivePower = AppendNode(doc, electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  SetNodeValue(doc, reactivePower, data.reactivePower);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  SetNodeAttribute(doc, reactivePower, <span class="stringliteral">"UnitID"</span>, data.reactivePowerUnit);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keyword">auto</span> haveMaxReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"HaveMaxReactive"</span>);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  SetNodeValue(doc, haveMaxReactive, data.haveMaxReactive);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keyword">auto</span> maxReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"MaxReactive"</span>);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  SetNodeValue(doc, maxReactive, data.maxReactive);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  SetNodeAttribute(doc, maxReactive, <span class="stringliteral">"UnitID"</span>, data.maxReactiveUnit);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keyword">auto</span> haveMinReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"HaveMinReactive"</span>);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  SetNodeValue(doc, haveMinReactive, data.haveMinReactive);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keyword">auto</span> minReactive = AppendNode(doc, electricalProp, <span class="stringliteral">"MinReactive"</span>);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  SetNodeValue(doc, minReactive, data.minReactive);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  SetNodeAttribute(doc, minReactive, <span class="stringliteral">"UnitID"</span>, data.minReactiveUnit);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keyword">auto</span> useMachineBase = AppendNode(doc, electricalProp, <span class="stringliteral">"UseMachineBase"</span>);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  SetNodeValue(doc, useMachineBase, data.useMachineBase);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> </div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keyword">auto</span> fault = AppendNode(doc, electricalProp, <span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keyword">auto</span> positiveResistance = AppendNode(doc, fault, <span class="stringliteral">"PositiveResistance"</span>);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  SetNodeValue(doc, positiveResistance, data.positiveResistance);</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keyword">auto</span> positiveReactance = AppendNode(doc, fault, <span class="stringliteral">"PositiveReactance"</span>);</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  SetNodeValue(doc, positiveReactance, data.positiveReactance);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keyword">auto</span> negativeResistance = AppendNode(doc, fault, <span class="stringliteral">"NegativeResistance"</span>);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  SetNodeValue(doc, negativeResistance, data.negativeResistance);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keyword">auto</span> negativeReactance = AppendNode(doc, fault, <span class="stringliteral">"NegativeReactance"</span>);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  SetNodeValue(doc, negativeReactance, data.negativeReactance);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keyword">auto</span> zeroResistance = AppendNode(doc, fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  SetNodeValue(doc, zeroResistance, data.zeroResistance);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keyword">auto</span> zeroReactance = AppendNode(doc, fault, <span class="stringliteral">"ZeroReactance"</span>);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  SetNodeValue(doc, zeroReactance, data.zeroReactance);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keyword">auto</span> groundResistance = AppendNode(doc, fault, <span class="stringliteral">"GroundResistance"</span>);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  SetNodeValue(doc, groundResistance, data.groundResistance);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="keyword">auto</span> groundReactance = AppendNode(doc, fault, <span class="stringliteral">"GroundReactance"</span>);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  SetNodeValue(doc, groundReactance, data.groundReactance);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keyword">auto</span> groundNeutral = AppendNode(doc, fault, <span class="stringliteral">"GroundNeutral"</span>);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  SetNodeValue(doc, groundNeutral, data.groundNeutral);</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> </div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="comment">// To future use...</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">/*auto stability = AppendNode(doc, electricalProp, "Stability");</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="comment"> auto plotSyncMachine = AppendNode(doc, stability, "PlotSyncMotor");</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="comment"> SetNodeValue(doc, plotSyncMachine, data.plotSyncMachine);</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> <span class="comment"> auto inertia = AppendNode(doc, stability, "Inertia");</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="comment"> SetNodeValue(doc, inertia, data.inertia);</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="comment"> auto damping = AppendNode(doc, stability, "Damping");</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> <span class="comment"> SetNodeValue(doc, damping, data.damping);</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span> <span class="comment"> auto useAVR = AppendNode(doc, stability, "UseAVR");</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span> <span class="comment"> SetNodeValue(doc, useAVR, data.useAVR);</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="comment"> auto armResistance = AppendNode(doc, stability, "ArmResistance");</span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="comment"> SetNodeValue(doc, armResistance, data.armResistance);</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="comment"> auto potierReactance = AppendNode(doc, stability, "PotierReactance");</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span> <span class="comment"> SetNodeValue(doc, potierReactance, data.potierReactance);</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> <span class="comment"> auto satFactor = AppendNode(doc, stability, "SatFactor");</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <span class="comment"> SetNodeValue(doc, satFactor, data.satFactor);</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> <span class="comment"> auto syncXd = AppendNode(doc, stability, "SyncXd");</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="comment"> SetNodeValue(doc, syncXd, data.syncXd);</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> <span class="comment"> auto syncXq = AppendNode(doc, stability, "SyncXq");</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="comment"> SetNodeValue(doc, syncXq, data.syncXq);</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> <span class="comment"> auto transXd = AppendNode(doc, stability, "TransXd");</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="comment"> SetNodeValue(doc, transXd, data.transXd);</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="comment"> auto transXq = AppendNode(doc, stability, "TransXq");</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="comment"> SetNodeValue(doc, transXq, data.transXq);</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="comment"> auto transTd0 = AppendNode(doc, stability, "TransTd0");</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="comment"> SetNodeValue(doc, transTd0, data.transTd0);</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="comment"> auto transTq0 = AppendNode(doc, stability, "TransTq0");</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="comment"> SetNodeValue(doc, transTq0, data.transTq0);</span></div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span> <span class="comment"> auto subXd = AppendNode(doc, stability, "SubXd");</span></div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="comment"> SetNodeValue(doc, subXd, data.subXd);</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="comment"> auto subXq = AppendNode(doc, stability, "SubXq");</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="comment"> SetNodeValue(doc, subXq, data.subXq);</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="comment"> auto subTd0 = AppendNode(doc, stability, "SubTd0");</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> <span class="comment"> SetNodeValue(doc, subTd0, data.subTd0);</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="comment"> auto subTq0 = AppendNode(doc, stability, "SubTq0");</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span> <span class="comment"> SetNodeValue(doc, subTq0, data.subTq0);</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> <span class="comment"></span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span> <span class="comment"> auto switchingList = AppendNode(doc, electricalProp, "SwitchingList");</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> <span class="comment"> SwitchingData swData = syncGenerator->GetSwitchingData();</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="comment"> for(int j = 0; j < (int)swData.swType.size(); j++) {</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> <span class="comment"> auto switching = AppendNode(doc, switchingList, "Switching");</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="comment"> SetNodeAttribute(doc, switching, "ID", j);</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="comment"> auto swType = AppendNode(doc, switching, "Type");</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="comment"> SetNodeValue(doc, swType, swData.swType[j]);</span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> <span class="comment"> auto swTime = AppendNode(doc, switching, "Time");</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="comment"> SetNodeValue(doc, swTime, swData.swTime[j]);</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="comment"> }*/</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  } <span class="comment">//}</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="comment">//{ Transfomer</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keyword">auto</span> transformersNode = AppendNode(doc, elementsNode, <span class="stringliteral">"TransformerList"</span>);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keyword">auto</span> transformerList = allElements.<a class="code" href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e">GetTransformerList</a>();</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)transformerList.size(); i++) {</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <a class="code" href="class_transformer.html">Transformer</a>* transfomer = transformerList[i];</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keyword">auto</span> transformerNode = AppendNode(doc, transformersNode, <span class="stringliteral">"Transfomer"</span>);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  SetNodeAttribute(doc, transformerNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, transformerNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  SetNodeValue(doc, posX, transfomer-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  SetNodeValue(doc, posY, transfomer-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  SetNodeValue(doc, width, transfomer-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  SetNodeValue(doc, height, transfomer-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  SetNodeValue(doc, angle, transfomer-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, cadProp, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="keyword">auto</span> nodePos1 = AppendNode(doc, nodeList, <span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  SetNodeAttribute(doc, nodePos1, <span class="stringliteral">"ID"</span>, 0);</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="keyword">auto</span> nodePosX1 = AppendNode(doc, nodePos1, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  SetNodeValue(doc, nodePosX1, transfomer-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_x);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keyword">auto</span> nodePosY1 = AppendNode(doc, nodePos1, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  SetNodeValue(doc, nodePosY1, transfomer-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[0].m_y);</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <span class="keyword">auto</span> nodePos2 = AppendNode(doc, nodeList, <span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  SetNodeAttribute(doc, nodePos2, <span class="stringliteral">"ID"</span>, 1);</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keyword">auto</span> nodePosX2 = AppendNode(doc, nodePos2, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  SetNodeValue(doc, nodePosX2, transfomer-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[transfomer-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>().size() - 1].m_x);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keyword">auto</span> nodePosY2 = AppendNode(doc, nodePos2, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  SetNodeValue(doc, nodePosY2, transfomer-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>()[transfomer-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>().size() - 1].m_y);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span> </div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keyword">auto</span> parentIDList = AppendNode(doc, cadProp, <span class="stringliteral">"ParentIDList"</span>);</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)transfomer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); j++) {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(transfomer-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[j]);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keyword">auto</span> parentID = AppendNode(doc, parentIDList, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  SetNodeAttribute(doc, parentID, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  SetNodeValue(doc, parentID, parent->GetElectricalData().number);</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  }</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  }</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span> </div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transfomer->GetElectricalData();</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keyword">auto</span> electricalProp = AppendNode(doc, transformerNode, <span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keyword">auto</span> isOnline = AppendNode(doc, electricalProp, <span class="stringliteral">"IsOnline"</span>);</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  SetNodeValue(doc, isOnline, transfomer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>());</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keyword">auto</span> name = AppendNode(doc, electricalProp, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  SetNodeValue(doc, name, data.name);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keyword">auto</span> primaryNominalVoltage = AppendNode(doc, electricalProp, <span class="stringliteral">"PrimaryNominalVoltage"</span>);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  SetNodeValue(doc, primaryNominalVoltage, data.primaryNominalVoltage);</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  SetNodeAttribute(doc, primaryNominalVoltage, <span class="stringliteral">"UnitID"</span>, data.primaryNominalVoltageUnit);</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="keyword">auto</span> secondaryNominalVoltage = AppendNode(doc, electricalProp, <span class="stringliteral">"SecondaryNominalVoltage"</span>);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  SetNodeValue(doc, secondaryNominalVoltage, data.secondaryNominalVoltage);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  SetNodeAttribute(doc, secondaryNominalVoltage, <span class="stringliteral">"UnitID"</span>, data.secondaryNominalVoltageUnit);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keyword">auto</span> nominalPower = AppendNode(doc, electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  SetNodeValue(doc, nominalPower, data.nominalPower);</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  SetNodeAttribute(doc, nominalPower, <span class="stringliteral">"UnitID"</span>, data.nominalPowerUnit);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  <span class="keyword">auto</span> resistance = AppendNode(doc, electricalProp, <span class="stringliteral">"Resistance"</span>);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  SetNodeValue(doc, resistance, data.resistance);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  SetNodeAttribute(doc, resistance, <span class="stringliteral">"UnitID"</span>, data.resistanceUnit);</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keyword">auto</span> indReactance = AppendNode(doc, electricalProp, <span class="stringliteral">"IndReactance"</span>);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  SetNodeValue(doc, indReactance, data.indReactance);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  SetNodeAttribute(doc, indReactance, <span class="stringliteral">"UnitID"</span>, data.indReactanceUnit);</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keyword">auto</span> connection = AppendNode(doc, electricalProp, <span class="stringliteral">"Connection"</span>);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  SetNodeValue(doc, connection, data.connection);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keyword">auto</span> turnsRatio = AppendNode(doc, electricalProp, <span class="stringliteral">"TurnsRatio"</span>);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  SetNodeValue(doc, turnsRatio, data.turnsRatio);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  <span class="keyword">auto</span> phaseShift = AppendNode(doc, electricalProp, <span class="stringliteral">"PhaseShift"</span>);</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  SetNodeValue(doc, phaseShift, data.phaseShift);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <span class="keyword">auto</span> useTransformerPower = AppendNode(doc, electricalProp, <span class="stringliteral">"UseTransfomerPower"</span>);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  SetNodeValue(doc, useTransformerPower, data.useTransformerPower);</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span> </div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keyword">auto</span> fault = AppendNode(doc, electricalProp, <span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keyword">auto</span> zeroResistance = AppendNode(doc, fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  SetNodeValue(doc, zeroResistance, data.zeroResistance);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keyword">auto</span> zeroIndReactance = AppendNode(doc, fault, <span class="stringliteral">"ZeroIndReactance"</span>);</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  SetNodeValue(doc, zeroIndReactance, data.zeroIndReactance);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keyword">auto</span> primaryGrndResistance = AppendNode(doc, fault, <span class="stringliteral">"PrimaryGrndResistance"</span>);</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  SetNodeValue(doc, primaryGrndResistance, data.primaryGrndResistance);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="keyword">auto</span> primaryGrndReactance = AppendNode(doc, fault, <span class="stringliteral">"PrimaryGrndReactance"</span>);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  SetNodeValue(doc, primaryGrndReactance, data.primaryGrndReactance);</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keyword">auto</span> secondaryGrndResistance = AppendNode(doc, fault, <span class="stringliteral">"SecondaryGrndResistance"</span>);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  SetNodeValue(doc, secondaryGrndResistance, data.secondaryGrndResistance);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="keyword">auto</span> secondaryGrndReactance = AppendNode(doc, fault, <span class="stringliteral">"SecondaryGrndReactance"</span>);</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  SetNodeValue(doc, secondaryGrndReactance, data.secondaryGrndReactance);</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span> </div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="keyword">auto</span> switchingList = AppendNode(doc, electricalProp, <span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData = transfomer-><a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>();</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.size(); j++) {</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keyword">auto</span> switching = AppendNode(doc, switchingList, <span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  SetNodeAttribute(doc, switching, <span class="stringliteral">"ID"</span>, j);</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keyword">auto</span> swType = AppendNode(doc, switching, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  SetNodeValue(doc, swType, swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>[j]);</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <span class="keyword">auto</span> swTime = AppendNode(doc, switching, <span class="stringliteral">"Time"</span>);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  SetNodeValue(doc, swTime, swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>[j]);</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  }</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  } <span class="comment">//}</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span> </div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="comment">//{ Text</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keyword">auto</span> textsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"TextList"</span>);</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keyword">auto</span> textList = m_workspace->GetTextList();</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)textList.size(); i++) {</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <a class="code" href="class_text.html">Text</a>* text = textList[i];</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="keyword">auto</span> textNode = AppendNode(doc, textsNode, <span class="stringliteral">"Text"</span>);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  SetNodeAttribute(doc, textNode, <span class="stringliteral">"ID"</span>, i);</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, textNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  SetNodeValue(doc, posX, text-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  SetNodeValue(doc, posY, text-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  SetNodeValue(doc, width, text-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  SetNodeValue(doc, height, text-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  SetNodeValue(doc, angle, text-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keyword">auto</span> textProperties = AppendNode(doc, textNode, <span class="stringliteral">"TextProperties"</span>);</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="keyword">auto</span> elementType = AppendNode(doc, textProperties, <span class="stringliteral">"ElementType"</span>);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  SetNodeValue(doc, elementType, text->GetElementType());</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  <span class="keyword">auto</span> elementNumber = AppendNode(doc, textProperties, <span class="stringliteral">"ElementNumber"</span>);</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  SetNodeValue(doc, elementNumber, text->GetElementNumber());</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keyword">auto</span> dataType = AppendNode(doc, textProperties, <span class="stringliteral">"DataType"</span>);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  SetNodeValue(doc, dataType, text->GetDataType());</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keyword">auto</span> dataUnit = AppendNode(doc, textProperties, <span class="stringliteral">"DataUnit"</span>);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  SetNodeValue(doc, dataUnit, text->GetUnit());</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keyword">auto</span> direction = AppendNode(doc, textProperties, <span class="stringliteral">"Direction"</span>);</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  SetNodeValue(doc, direction, text->GetDirection());</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keyword">auto</span> decimalPlaces = AppendNode(doc, textProperties, <span class="stringliteral">"DecimalPlaces"</span>);</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  SetNodeValue(doc, decimalPlaces, text->GetDecimalPlaces());</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  }</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="comment">//}</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span> </div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  std::ofstream writeXML(path.GetFullPath());</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  writeXML << doc;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  writeXML.close();</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span> }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span> </div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> <span class="keywordtype">bool</span> FileHanding::OpenProject(wxFileName path)</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> {</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  rapidxml::xml_document<> doc;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  rapidxml::file<> xmlFile(path.GetFullPath().mb_str());</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> </div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  doc.parse<0>(xmlFile.data());</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span> </div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keyword">auto</span> projectNode = doc.first_node(<span class="stringliteral">"Project"</span>);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keywordflow">if</span>(!projectNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="keyword">auto</span> nameNode = projectNode->first_node(<span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keywordflow">if</span>(!nameNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  m_workspace->SetName(nameNode->value());</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> </div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="comment">// Open elements</span></div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keyword">auto</span> elementsNode = projectNode->first_node(<span class="stringliteral">"Elements"</span>);</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">if</span>(!elementsNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  std::vector<Element*> elementList;</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="comment">// Save lists individually to get parents</span></div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  std::vector<Bus*> busList;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  std::vector<Capacitor*> capacitorList;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  std::vector<IndMotor*> indMotorList;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  std::vector<Inductor*> inductorList;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  std::vector<Line*> lineList;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  std::vector<Load*> loadList;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  std::vector<SyncGenerator*> syncGeneratorList;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  std::vector<SyncMotor*> syncMotorList;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  std::vector<Transformer*> transformerList;</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  std::vector<Text*> textList;</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> </div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="comment">//{ Bus</span></div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="keyword">auto</span> busListNode = elementsNode->first_node(<span class="stringliteral">"BusList"</span>);</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="keywordflow">if</span>(!busListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="keyword">auto</span> busNode = busListNode->first_node(<span class="stringliteral">"Bus"</span>);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="keywordflow">while</span>(busNode) {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keyword">auto</span> cadPropNode = busNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span> </div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <a class="code" href="class_bus.html">Bus</a>* bus = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span> </div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  bus-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  bus-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  bus-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(bus-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>()); <span class="comment">// Update bus rectangle.</span></div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="keywordtype">int</span> numRot = angle / bus-><a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>();</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  }</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numRot; i++) bus-><a class="code" href="class_bus.html#ace039d00c23d36a7c14d7e4155c94791">Rotate</a>(clockwise);</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> </div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="keyword">auto</span> electricalProp = busNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span> </div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  data.nominalVoltage = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalVoltage"</span>);</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  data.nominalVoltageUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"NominalVoltage"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  data.isVoltageControlled = GetNodeValueInt(electricalProp, <span class="stringliteral">"IsVoltageControlled"</span>);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  data.controlledVoltage = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ControlledVoltage"</span>);</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  data.controlledVoltageUnitChoice = GetAttributeValueInt(electricalProp, <span class="stringliteral">"ControlledVoltage"</span>, <span class="stringliteral">"Choice"</span>);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  data.slackBus = GetNodeValueInt(electricalProp, <span class="stringliteral">"SlackBus"</span>);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="keyword">auto</span> fault = electricalProp->first_node(<span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  data.hasFault = GetNodeValueInt(fault, <span class="stringliteral">"HasFault"</span>);</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  data.faultType = (<a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a>)GetNodeValueInt(fault, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  data.faultLocation = (<a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a>)GetNodeValueInt(fault, <span class="stringliteral">"Location"</span>);</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  data.faultResistance = GetNodeValueDouble(fault, <span class="stringliteral">"Resistance"</span>);</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  data.faultReactance = GetNodeValueDouble(fault, <span class="stringliteral">"Reactance"</span>);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keyword">auto</span> stability = electricalProp->first_node(<span class="stringliteral">"Stability"</span>);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  data.plotBus = GetNodeValueInt(stability, <span class="stringliteral">"Plot"</span>);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  data.stabHasFault = GetNodeValueInt(stability, <span class="stringliteral">"HasFault"</span>);</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  data.stabFaultTime = GetNodeValueDouble(stability, <span class="stringliteral">"FaultTime"</span>);</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  data.stabFaultLength = GetNodeValueDouble(stability, <span class="stringliteral">"FaultLength"</span>);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  data.stabFaultResistance = GetNodeValueDouble(stability, <span class="stringliteral">"FaultResistance"</span>);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  data.stabFaultReactance = GetNodeValueDouble(stability, <span class="stringliteral">"FaultReactance"</span>);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span> </div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span> </div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <span class="keywordflow">if</span>(data.stabHasFault) bus-><a class="code" href="class_power_element.html#a4dbd26d0a7987c30729efffa860debc4">SetDynamicEvent</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span> </div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  elementList.push_back(bus);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  busList.push_back(bus);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  busNode = busNode->next_sibling(<span class="stringliteral">"Bus"</span>);</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  } <span class="comment">//}</span></div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span> </div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <span class="comment">//{ Capacitor</span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  <span class="keyword">auto</span> capacitorListNode = elementsNode->first_node(<span class="stringliteral">"CapacitorList"</span>);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  <span class="keywordflow">if</span>(!capacitorListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keyword">auto</span> capacitorNode = capacitorListNode->first_node(<span class="stringliteral">"Capacitor"</span>);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <span class="keywordflow">while</span>(capacitorNode) {</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = <span class="keyword">new</span> <a class="code" href="class_capacitor.html">Capacitor</a>();</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> </div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keyword">auto</span> cadPropNode = capacitorNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span> </div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keyword">auto</span> nodePosition = cadPropNode->first_node(<span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="keywordtype">int</span> parentID = GetNodeValueInt(cadPropNode, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <span class="keywordflow">if</span>(parentID == -1) {</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="comment">// If the element has no parent, create a temporary one, remove and delete.</span></div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  capacitor-><a class="code" href="class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  capacitor-><a class="code" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">StartMove</a>(capacitor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  capacitor-><a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  capacitor-><a class="code" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">RemoveParent</a>(parent);</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keyword">delete</span> parent;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="class_bus.html">Bus</a>* parent = busList[parentID];</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  capacitor-><a class="code" href="class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  capacitor-><a class="code" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">StartMove</a>(capacitor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  capacitor-><a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  }</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  capacitor-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  capacitor-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span> </div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keywordtype">int</span> numRot = angle / capacitor-><a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>();</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  }</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numRot; i++) capacitor-><a class="code" href="class_capacitor.html#a2c3f0949c2b791c6a0b69866e9aaff7a">Rotate</a>(clockwise);</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span> </div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <span class="keyword">auto</span> electricalProp = capacitorNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span> </div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  capacitor-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(GetNodeValueInt(electricalProp, <span class="stringliteral">"IsOnline"</span>));</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = capacitor->GetElectricalData();</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  data.reactivePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  data.reactivePowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"ReactivePower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span> </div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  <span class="keyword">auto</span> switchingList = electricalProp->first_node(<span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="keywordflow">if</span>(!switchingList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keyword">auto</span> swNode = switchingList->first_node(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <span class="keywordflow">while</span>(swNode) {</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.push_back((<a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b">SwitchingType</a>)GetNodeValueInt(swNode, <span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.push_back(GetNodeValueDouble(swNode, <span class="stringliteral">"Time"</span>));</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  swNode = swNode->next_sibling(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  }</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  capacitor-><a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(swData);</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span> </div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  capacitor->SetElectricalData(data);</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span> </div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.size() != 0) capacitor-><a class="code" href="class_power_element.html#a4dbd26d0a7987c30729efffa860debc4">SetDynamicEvent</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> </div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  elementList.push_back(capacitor);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  capacitorList.push_back(capacitor);</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  capacitorNode = capacitorNode->next_sibling(<span class="stringliteral">"Capacitor"</span>);</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  } <span class="comment">//}</span></div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span> </div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="comment">//{ IndMotor</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  <span class="keyword">auto</span> indMotorListNode = elementsNode->first_node(<span class="stringliteral">"IndMotorList"</span>);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keywordflow">if</span>(!indMotorListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  <span class="keyword">auto</span> indMotorNode = indMotorListNode->first_node(<span class="stringliteral">"IndMotor"</span>);</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <span class="keywordflow">while</span>(indMotorNode) {</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = <span class="keyword">new</span> <a class="code" href="class_ind_motor.html">IndMotor</a>();</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span> </div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <span class="keyword">auto</span> cadPropNode = indMotorNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span> </div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="keyword">auto</span> nodePosition = cadPropNode->first_node(<span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keywordtype">int</span> parentID = GetNodeValueInt(cadPropNode, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="keywordflow">if</span>(parentID == -1) {</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="comment">// If the element has no parent, create a temporary one, remove and delete.</span></div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  indMotor-><a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  indMotor-><a class="code" href="class_machines.html#acbefe76cd5161b5684a27205b155e797">StartMove</a>(indMotor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  indMotor-><a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  indMotor-><a class="code" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">RemoveParent</a>(parent);</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <span class="keyword">delete</span> parent;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <a class="code" href="class_bus.html">Bus</a>* parent = busList[parentID];</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  indMotor-><a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  indMotor-><a class="code" href="class_machines.html#acbefe76cd5161b5684a27205b155e797">StartMove</a>(indMotor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  indMotor-><a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  }</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  indMotor-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  indMotor-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> </div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordtype">int</span> numRot = angle / indMotor-><a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>();</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  }</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numRot; i++) indMotor-><a class="code" href="class_machines.html#acff264f0c80d97a966ff97401f2f142a">Rotate</a>(clockwise);</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> </div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keyword">auto</span> electricalProp = indMotorNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> </div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  indMotor-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(GetNodeValueInt(electricalProp, <span class="stringliteral">"IsOnline"</span>));</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data = indMotor->GetElectricalData();</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  data.activePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  data.activePowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"ActivePower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  data.reactivePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  data.reactivePowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"ReactivePower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> </div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  indMotor->SetElectricalData(data);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  elementList.push_back(indMotor);</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  indMotorList.push_back(indMotor);</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  indMotorNode = indMotorNode->next_sibling(<span class="stringliteral">"IndMotor"</span>);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> </div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  <span class="comment">//{ Inductor</span></div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <span class="keyword">auto</span> inductorListNode = elementsNode->first_node(<span class="stringliteral">"InductorList"</span>);</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <span class="keywordflow">if</span>(!inductorListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  <span class="keyword">auto</span> inductorNode = inductorListNode->first_node(<span class="stringliteral">"Inductor"</span>);</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <span class="keywordflow">while</span>(inductorNode) {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = <span class="keyword">new</span> <a class="code" href="class_inductor.html">Inductor</a>();</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> </div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <span class="keyword">auto</span> cadPropNode = inductorNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> </div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keyword">auto</span> nodePosition = cadPropNode->first_node(<span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <span class="keywordtype">int</span> parentID = GetNodeValueInt(cadPropNode, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  <span class="keywordflow">if</span>(parentID == -1) {</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="comment">// If the element has no parent, create a temporary one, remove and delete.</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  inductor-><a class="code" href="class_inductor.html#a4e404c6e15f206fe0f5de06fc19dedf5">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  inductor-><a class="code" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">StartMove</a>(inductor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  inductor-><a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  inductor-><a class="code" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">RemoveParent</a>(parent);</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keyword">delete</span> parent;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <a class="code" href="class_bus.html">Bus</a>* parent = busList[parentID];</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  inductor-><a class="code" href="class_inductor.html#a4e404c6e15f206fe0f5de06fc19dedf5">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  inductor-><a class="code" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">StartMove</a>(inductor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  inductor-><a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  }</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  inductor-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  inductor-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> </div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <span class="keywordtype">int</span> numRot = angle / inductor-><a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>();</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  }</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numRot; i++) inductor-><a class="code" href="class_inductor.html#a801bb445c01059558902c0eca4d38cdd">Rotate</a>(clockwise);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> </div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  <span class="keyword">auto</span> electricalProp = inductorNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> </div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  inductor-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(GetNodeValueInt(electricalProp, <span class="stringliteral">"IsOnline"</span>));</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = inductor->GetElectricalData();</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  data.reactivePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  data.reactivePowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"ReactivePower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> </div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <span class="keyword">auto</span> switchingList = electricalProp->first_node(<span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="keywordflow">if</span>(!switchingList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <span class="keyword">auto</span> swNode = switchingList->first_node(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <span class="keywordflow">while</span>(swNode) {</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.push_back((<a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b">SwitchingType</a>)GetNodeValueInt(swNode, <span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.push_back(GetNodeValueDouble(swNode, <span class="stringliteral">"Time"</span>));</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  swNode = swNode->next_sibling(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  }</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  inductor-><a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(swData);</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  inductor->SetElectricalData(data);</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> </div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.size() != 0) inductor-><a class="code" href="class_power_element.html#a4dbd26d0a7987c30729efffa860debc4">SetDynamicEvent</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> </div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  elementList.push_back(inductor);</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  inductorList.push_back(inductor);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  inductorNode = inductorNode->next_sibling(<span class="stringliteral">"Inductor"</span>);</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <span class="comment">//{ Line</span></div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  <span class="keyword">auto</span> lineListNode = elementsNode->first_node(<span class="stringliteral">"LineList"</span>);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  <span class="keywordflow">if</span>(!lineListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <span class="keyword">auto</span> lineNode = lineListNode->first_node(<span class="stringliteral">"Line"</span>);</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <span class="keywordflow">while</span>(lineNode) {</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <a class="code" href="class_line.html">Line</a>* line = <span class="keyword">new</span> <a class="code" href="class_line.html">Line</a>();</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> </div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  <span class="keyword">auto</span> cadPropNode = lineNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> </div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="comment">// Get nodes points</span></div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  std::vector<wxPoint2DDouble> ptsList;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  <span class="keyword">auto</span> nodePosList = cadPropNode->first_node(<span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <span class="keywordflow">if</span>(!nodePosList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="keyword">auto</span> nodePos = nodePosList->first_node(<span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  <span class="keywordflow">while</span>(nodePos) {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  ptsList.push_back(wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  nodePos = nodePos->next_sibling(<span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  }</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> </div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  <span class="comment">// Get parents IDs</span></div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <span class="keyword">auto</span> parentIDList = cadPropNode->first_node(<span class="stringliteral">"ParentIDList"</span>);</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  <span class="keywordflow">if</span>(!parentIDList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  <span class="keyword">auto</span> parentNode = parentIDList->first_node(<span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keywordtype">long</span> parentID[2] = {-1, -1};</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <span class="keywordflow">while</span>(parentNode) {</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="keywordtype">long</span> index = 0;</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  wxString(parentNode->first_attribute(<span class="stringliteral">"ID"</span>)->value()).ToLong(&index);</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  wxString(parentNode->value()).ToCLong(&parentID[index]);</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  parentNode = parentNode->next_sibling(<span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  }</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> </div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <span class="comment">// Set parents (if have)</span></div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <a class="code" href="class_bus.html">Bus</a> *parent1, *parent2;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <span class="keywordflow">if</span>(parentID[0] == -1) {</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  parent1 = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(ptsList[0]);</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  line-><a class="code" href="class_line.html#a26c69f7f703dca718edc28d5093934a3">AddParent</a>(parent1, ptsList[0]);</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  parent1 = busList[parentID[0]];</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  line-><a class="code" href="class_line.html#a26c69f7f703dca718edc28d5093934a3">AddParent</a>(parent1, ptsList[0]);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  }</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <span class="keywordflow">if</span>(parentID[1] == -1) {</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  parent2 = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(ptsList[ptsList.size() - 1]);</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  line-><a class="code" href="class_line.html#a26c69f7f703dca718edc28d5093934a3">AddParent</a>(parent2, ptsList[ptsList.size() - 1]);</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  parent2 = busList[parentID[1]];</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  line-><a class="code" href="class_line.html#a26c69f7f703dca718edc28d5093934a3">AddParent</a>(parent2, ptsList[ptsList.size() - 1]);</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  }</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> </div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  <span class="comment">// Add the others nodes (if have)</span></div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  std::vector<wxPoint2DDouble> midPts;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < (int)ptsList.size() - 1; i++) midPts.push_back(ptsList[i]);</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  std::vector<wxPoint2DDouble> edgesPts = line-><a class="code" href="class_element.html#aff2870f5979a84a30c27917cb33271f9">GetPointList</a>();</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  edgesPts.insert(edgesPts.begin() + 2, midPts.begin(), midPts.end());</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  line-><a class="code" href="class_line.html#af9a931bdb7e0693cacae010a19b744e6">SetPointList</a>(edgesPts);</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> </div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="keywordflow">if</span>(parentID[0] == -1) {</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  line-><a class="code" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">RemoveParent</a>(parent1);</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <span class="keyword">delete</span> parent1;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  }</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  <span class="keywordflow">if</span>(parentID[1] == -1) {</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  line-><a class="code" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">RemoveParent</a>(parent2);</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <span class="keyword">delete</span> parent2;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  }</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> </div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <span class="keyword">auto</span> electricalProp = lineNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> </div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  line-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(GetNodeValueInt(electricalProp, <span class="stringliteral">"IsOnline"</span>));</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = line->GetElectricalData();</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  data.nominalVoltage = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalVoltage"</span>);</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  data.nominalVoltageUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"NominalVoltage"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  data.nominalPower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  data.nominalPowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"NominalPower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  data.resistance = GetNodeValueDouble(electricalProp, <span class="stringliteral">"Resistance"</span>);</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  data.resistanceUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"Resistance"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  data.indReactance = GetNodeValueDouble(electricalProp, <span class="stringliteral">"IndReactance"</span>);</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  data.indReactanceUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"IndReactance"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  data.capSusceptance = GetNodeValueDouble(electricalProp, <span class="stringliteral">"CapSusceptance"</span>);</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  data.capSusceptanceUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"CapSusceptance"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  data.lineSize = GetNodeValueDouble(electricalProp, <span class="stringliteral">"LineSize"</span>);</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  data.useLinePower = GetNodeValueInt(electricalProp, <span class="stringliteral">"UseLinePower"</span>);</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span> </div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <span class="keyword">auto</span> fault = electricalProp->first_node(<span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  data.zeroResistance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  data.zeroIndReactance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroIndReactance"</span>);</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  data.zeroCapSusceptance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroCapSusceptance"</span>);</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> </div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  <span class="keyword">auto</span> switchingList = electricalProp->first_node(<span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  <span class="keywordflow">if</span>(!switchingList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <span class="keyword">auto</span> swNode = switchingList->first_node(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  <span class="keywordflow">while</span>(swNode) {</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.push_back((<a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b">SwitchingType</a>)GetNodeValueInt(swNode, <span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.push_back(GetNodeValueDouble(swNode, <span class="stringliteral">"Time"</span>));</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  swNode = swNode->next_sibling(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  }</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  line-><a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(swData);</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> </div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  line->SetElectricalData(data);</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> </div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.size() != 0) line-><a class="code" href="class_power_element.html#a4dbd26d0a7987c30729efffa860debc4">SetDynamicEvent</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span> </div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  elementList.push_back(line);</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  lineList.push_back(line);</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  lineNode = lineNode->next_sibling(<span class="stringliteral">"Line"</span>);</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> </div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  <span class="comment">//{ Load</span></div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keyword">auto</span> loadListNode = elementsNode->first_node(<span class="stringliteral">"LoadList"</span>);</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  <span class="keywordflow">if</span>(!loadListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  <span class="keyword">auto</span> loadNode = loadListNode->first_node(<span class="stringliteral">"Load"</span>);</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  <span class="keywordflow">while</span>(loadNode) {</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  <a class="code" href="class_load.html">Load</a>* load = <span class="keyword">new</span> <a class="code" href="class_load.html">Load</a>();</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span> </div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  <span class="keyword">auto</span> cadPropNode = loadNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span> </div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  <span class="keyword">auto</span> nodePosition = cadPropNode->first_node(<span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  <span class="keywordtype">int</span> parentID = GetNodeValueInt(cadPropNode, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  <span class="keywordflow">if</span>(parentID == -1) {</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  <span class="comment">// If the element has no parent, create a temporary one, remove and delete.</span></div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  load-><a class="code" href="class_load.html#ac9f449be9b919b36924a844324bf37ee">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  load-><a class="code" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">StartMove</a>(load-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  load-><a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  load-><a class="code" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">RemoveParent</a>(parent);</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  <span class="keyword">delete</span> parent;</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <a class="code" href="class_bus.html">Bus</a>* parent = busList[parentID];</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  load-><a class="code" href="class_load.html#ac9f449be9b919b36924a844324bf37ee">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  load-><a class="code" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">StartMove</a>(load-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  load-><a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  }</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  load-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  load-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> </div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  <span class="keywordtype">int</span> numRot = angle / load-><a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>();</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  }</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numRot; i++) load-><a class="code" href="class_load.html#a46e9f2e0935ecca77b3a46568404d8e3">Rotate</a>(clockwise);</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> </div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  <span class="keyword">auto</span> electricalProp = loadNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> </div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  load-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(GetNodeValueInt(electricalProp, <span class="stringliteral">"IsOnline"</span>));</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = load->GetElectricalData();</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  data.activePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  data.activePowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"ActivePower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  data.reactivePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  data.reactivePowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"ReactivePower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  data.loadType = (LoadType)GetNodeValueInt(electricalProp, <span class="stringliteral">"LoadType"</span>);</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> </div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData;</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  <span class="keyword">auto</span> switchingList = electricalProp->first_node(<span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  <span class="keywordflow">if</span>(!switchingList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  <span class="keyword">auto</span> swNode = switchingList->first_node(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <span class="keywordflow">while</span>(swNode) {</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.push_back((<a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b">SwitchingType</a>)GetNodeValueInt(swNode, <span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.push_back(GetNodeValueDouble(swNode, <span class="stringliteral">"Time"</span>));</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  swNode = swNode->next_sibling(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  }</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  load-><a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(swData);</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span> </div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  load->SetElectricalData(data);</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span> </div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.size() != 0) load-><a class="code" href="class_power_element.html#a4dbd26d0a7987c30729efffa860debc4">SetDynamicEvent</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span> </div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  elementList.push_back(load);</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  loadList.push_back(load);</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  loadNode = loadNode->next_sibling(<span class="stringliteral">"Load"</span>);</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span> </div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  <span class="comment">//{ SyncGenerator</span></div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  <span class="keyword">auto</span> syncGeneratorListNode = elementsNode->first_node(<span class="stringliteral">"SyncGeneratorList"</span>);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  <span class="keywordflow">if</span>(!syncGeneratorListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  <span class="keyword">auto</span> syncGeneratorNode = syncGeneratorListNode->first_node(<span class="stringliteral">"SyncGenerator"</span>);</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  <span class="keywordflow">while</span>(syncGeneratorNode) {</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = <span class="keyword">new</span> <a class="code" href="class_sync_generator.html">SyncGenerator</a>();</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> </div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  <span class="keyword">auto</span> cadPropNode = syncGeneratorNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span> </div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  <span class="keyword">auto</span> nodePosition = cadPropNode->first_node(<span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <span class="keywordtype">int</span> parentID = GetNodeValueInt(cadPropNode, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  <span class="keywordflow">if</span>(parentID == -1) {</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  <span class="comment">// If the element has no parent, create a temporary one, remove and delete.</span></div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  syncGenerator-><a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  syncGenerator-><a class="code" href="class_machines.html#acbefe76cd5161b5684a27205b155e797">StartMove</a>(syncGenerator-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  syncGenerator-><a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  syncGenerator-><a class="code" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">RemoveParent</a>(parent);</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  <span class="keyword">delete</span> parent;</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  <a class="code" href="class_bus.html">Bus</a>* parent = busList[parentID];</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  syncGenerator-><a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  syncGenerator-><a class="code" href="class_machines.html#acbefe76cd5161b5684a27205b155e797">StartMove</a>(syncGenerator-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  syncGenerator-><a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>  }</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  syncGenerator-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>  syncGenerator-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span> </div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  <span class="keywordtype">int</span> numRot = angle / syncGenerator-><a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>();</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  }</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numRot; i++) syncGenerator-><a class="code" href="class_machines.html#acff264f0c80d97a966ff97401f2f142a">Rotate</a>(clockwise);</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span> </div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  <span class="keyword">auto</span> electricalProp = syncGeneratorNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> </div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  syncGenerator-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(GetNodeValueInt(electricalProp, <span class="stringliteral">"IsOnline"</span>));</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  data.nominalPower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  data.nominalPowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"NominalPower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  data.nominalVoltage = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalVoltage"</span>);</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  data.nominalVoltageUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"NominalVoltage"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  data.activePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  data.activePowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"ActivePower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  data.reactivePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  data.reactivePowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"ReactivePower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  data.haveMaxReactive = GetNodeValueInt(electricalProp, <span class="stringliteral">"HaveMaxReactive"</span>);</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  data.maxReactive = GetNodeValueDouble(electricalProp, <span class="stringliteral">"MaxReactive"</span>);</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  data.maxReactiveUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"MaxReactive"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  data.haveMinReactive = GetNodeValueInt(electricalProp, <span class="stringliteral">"HaveMinReactive"</span>);</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  data.minReactive = GetNodeValueDouble(electricalProp, <span class="stringliteral">"MinReactive"</span>);</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  data.minReactiveUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"MinReactive"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  data.useMachineBase = GetNodeValueInt(electricalProp, <span class="stringliteral">"UseMachineBase"</span>);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span> </div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  <span class="keyword">auto</span> fault = electricalProp->first_node(<span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>  <span class="keywordflow">if</span>(!fault) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  data.positiveResistance = GetNodeValueDouble(fault, <span class="stringliteral">"PositiveResistance"</span>);</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>  data.positiveReactance = GetNodeValueDouble(fault, <span class="stringliteral">"PositiveReactance"</span>);</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  data.negativeResistance = GetNodeValueDouble(fault, <span class="stringliteral">"NegativeResistance"</span>);</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  data.negativeReactance = GetNodeValueDouble(fault, <span class="stringliteral">"NegativeReactance"</span>);</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  data.zeroResistance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  data.zeroReactance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroReactance"</span>);</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  data.groundResistance = GetNodeValueDouble(fault, <span class="stringliteral">"GroundResistance"</span>);</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>  data.groundReactance = GetNodeValueDouble(fault, <span class="stringliteral">"GroundReactance"</span>);</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  data.groundNeutral = GetNodeValueInt(fault, <span class="stringliteral">"GroundNeutral"</span>);</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> </div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  <span class="keyword">auto</span> stability = electricalProp->first_node(<span class="stringliteral">"Stability"</span>);</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  <span class="keywordflow">if</span>(!stability) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>  data.plotSyncMachine = GetNodeValueInt(stability, <span class="stringliteral">"PlotSyncMachine"</span>);</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  data.inertia = GetNodeValueDouble(stability, <span class="stringliteral">"Inertia"</span>);</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  data.damping = GetNodeValueDouble(stability, <span class="stringliteral">"Damping"</span>);</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  data.useAVR = GetNodeValueInt(stability, <span class="stringliteral">"UseAVR"</span>);</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>  data.useSpeedGovernor = GetNodeValueInt(stability, <span class="stringliteral">"UseSpeedGovernor"</span>);</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>  data.armResistance = GetNodeValueDouble(stability, <span class="stringliteral">"ArmResistance"</span>);</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  data.potierReactance = GetNodeValueDouble(stability, <span class="stringliteral">"PotierReactance"</span>);</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>  data.satFactor = GetNodeValueDouble(stability, <span class="stringliteral">"SatFactor"</span>);</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  data.syncXd = GetNodeValueDouble(stability, <span class="stringliteral">"SyncXd"</span>);</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>  data.syncXq = GetNodeValueDouble(stability, <span class="stringliteral">"SyncXq"</span>);</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  data.transXd = GetNodeValueDouble(stability, <span class="stringliteral">"TransXd"</span>);</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  data.transXq = GetNodeValueDouble(stability, <span class="stringliteral">"TransXq"</span>);</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  data.transTd0 = GetNodeValueDouble(stability, <span class="stringliteral">"TransTd0"</span>);</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  data.transTq0 = GetNodeValueDouble(stability, <span class="stringliteral">"TransTq0"</span>);</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>  data.subXd = GetNodeValueDouble(stability, <span class="stringliteral">"SubXd"</span>);</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>  data.subXq = GetNodeValueDouble(stability, <span class="stringliteral">"SubXq"</span>);</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  data.subTd0 = GetNodeValueDouble(stability, <span class="stringliteral">"SubTd0"</span>);</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  data.subTq0 = GetNodeValueDouble(stability, <span class="stringliteral">"SubTq0"</span>);</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> </div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  <span class="keyword">auto</span> avr = stability->first_node(<span class="stringliteral">"AVR"</span>);</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>  <span class="keywordflow">if</span>(!avr) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  <span class="keywordflow">if</span>(!OpenControlElements(doc, avr, data.avr)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> </div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  <span class="keyword">auto</span> speedGov = stability->first_node(<span class="stringliteral">"SpeedGovernor"</span>);</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  <span class="keywordflow">if</span>(!speedGov) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  <span class="keywordflow">if</span>(!OpenControlElements(doc, speedGov, data.speedGov)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> </div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData;</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  <span class="keyword">auto</span> switchingList = electricalProp->first_node(<span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>  <span class="keywordflow">if</span>(!switchingList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <span class="keyword">auto</span> swNode = switchingList->first_node(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  <span class="keywordflow">while</span>(swNode) {</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.push_back((<a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b">SwitchingType</a>)GetNodeValueInt(swNode, <span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.push_back(GetNodeValueDouble(swNode, <span class="stringliteral">"Time"</span>));</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>  swNode = swNode->next_sibling(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>  }</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  syncGenerator-><a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(swData);</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span> </div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span> </div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.size() != 0) syncGenerator-><a class="code" href="class_power_element.html#a4dbd26d0a7987c30729efffa860debc4">SetDynamicEvent</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span> </div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  elementList.push_back(syncGenerator);</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  syncGeneratorList.push_back(syncGenerator);</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  syncGeneratorNode = syncGeneratorNode->next_sibling(<span class="stringliteral">"SyncGenerator"</span>);</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span> </div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>  <span class="comment">//{ SyncMotor</span></div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  <span class="keyword">auto</span> syncMotorListNode = elementsNode->first_node(<span class="stringliteral">"SyncMotorList"</span>);</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>  <span class="keywordflow">if</span>(!syncMotorListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>  <span class="keyword">auto</span> syncMotorNode = syncMotorListNode->first_node(<span class="stringliteral">"SyncMotor"</span>);</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>  <span class="keywordflow">while</span>(syncMotorNode) {</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = <span class="keyword">new</span> <a class="code" href="class_sync_motor.html">SyncMotor</a>();</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span> </div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>  <span class="keyword">auto</span> cadPropNode = syncMotorNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span> </div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>  <span class="keyword">auto</span> nodePosition = cadPropNode->first_node(<span class="stringliteral">"NodePosition"</span>);</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  <span class="keywordtype">int</span> parentID = GetNodeValueInt(cadPropNode, <span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  <span class="keywordflow">if</span>(parentID == -1) {</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  <span class="comment">// If the element has no parent, create a temporary one, remove and delete.</span></div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  syncMotor-><a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>  syncMotor-><a class="code" href="class_machines.html#acbefe76cd5161b5684a27205b155e797">StartMove</a>(syncMotor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>  syncMotor-><a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>  syncMotor-><a class="code" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">RemoveParent</a>(parent);</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>  <span class="keyword">delete</span> parent;</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>  <a class="code" href="class_bus.html">Bus</a>* parent = busList[parentID];</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  syncMotor-><a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(parent, wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>  syncMotor-><a class="code" href="class_machines.html#acbefe76cd5161b5684a27205b155e797">StartMove</a>(syncMotor-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>  syncMotor-><a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  }</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>  syncMotor-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>  syncMotor-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> </div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  <span class="keywordtype">int</span> numRot = angle / syncMotor-><a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>();</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>  }</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numRot; i++) syncMotor-><a class="code" href="class_machines.html#acff264f0c80d97a966ff97401f2f142a">Rotate</a>(clockwise);</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> </div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  <span class="keyword">auto</span> electricalProp = syncMotorNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> </div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  syncMotor-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(GetNodeValueInt(electricalProp, <span class="stringliteral">"IsOnline"</span>));</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = syncMotor->GetElectricalData();</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>  data.nominalPower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  data.nominalPowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"NominalPower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>  <span class="comment">// data.nominalVoltage = GetNodeValueDouble(electricalProp, "NominalVoltage");</span></div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>  <span class="comment">// data.nominalVoltageUnit = (ElectricalUnit)GetAttributeValueInt(electricalProp, "NominalVoltage", "UnitID");</span></div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>  data.activePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ActivePower"</span>);</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  data.activePowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"ActivePower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  data.reactivePower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"ReactivePower"</span>);</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>  data.reactivePowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"ReactivePower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>  data.haveMaxReactive = GetNodeValueInt(electricalProp, <span class="stringliteral">"HaveMaxReactive"</span>);</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>  data.maxReactive = GetNodeValueDouble(electricalProp, <span class="stringliteral">"MaxReactive"</span>);</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>  data.maxReactiveUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"MaxReactive"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>  data.haveMinReactive = GetNodeValueInt(electricalProp, <span class="stringliteral">"HaveMinReactive"</span>);</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>  data.minReactive = GetNodeValueDouble(electricalProp, <span class="stringliteral">"MinReactive"</span>);</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>  data.minReactiveUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"MinReactive"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>  data.useMachineBase = GetNodeValueInt(electricalProp, <span class="stringliteral">"UseMachineBase"</span>);</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> </div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  <span class="keyword">auto</span> fault = electricalProp->first_node(<span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>  <span class="keywordflow">if</span>(!fault) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>  data.positiveResistance = GetNodeValueDouble(fault, <span class="stringliteral">"PositiveResistance"</span>);</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>  data.positiveReactance = GetNodeValueDouble(fault, <span class="stringliteral">"PositiveReactance"</span>);</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  data.negativeResistance = GetNodeValueDouble(fault, <span class="stringliteral">"NegativeResistance"</span>);</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>  data.negativeReactance = GetNodeValueDouble(fault, <span class="stringliteral">"NegativeReactance"</span>);</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>  data.zeroResistance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  data.zeroReactance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroReactance"</span>);</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>  data.groundResistance = GetNodeValueDouble(fault, <span class="stringliteral">"GroundResistance"</span>);</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>  data.groundReactance = GetNodeValueDouble(fault, <span class="stringliteral">"GroundReactance"</span>);</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>  data.groundNeutral = GetNodeValueInt(fault, <span class="stringliteral">"GroundNeutral"</span>);</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span> </div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  <span class="comment">/*SwitchingData swData;</span></div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span> <span class="comment"> auto switchingList = electricalProp->first_node("SwitchingList");</span></div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span> <span class="comment"> if(!switchingList) return false;</span></div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> <span class="comment"> auto swNode = switchingList->first_node("Switching");</span></div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span> <span class="comment"> while(swNode) {</span></div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span> <span class="comment"> swData.swType.push_back((SwitchingType)GetNodeValueInt(swNode, "Type"));</span></div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span> <span class="comment"> swData.swTime.push_back(GetNodeValueDouble(swNode, "Time"));</span></div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span> <span class="comment"> swNode = swNode->next_sibling("Switching");</span></div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span> <span class="comment"> }</span></div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span> <span class="comment"> syncMotor->SetSwitchingData(swData);*/</span></div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span> </div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>  syncMotor->SetElectricalData(data);</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>  elementList.push_back(syncMotor);</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>  syncMotorList.push_back(syncMotor);</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>  syncMotorNode = syncMotorNode->next_sibling(<span class="stringliteral">"SyncMotor"</span>);</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span> </div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>  <span class="comment">//{ Transformer</span></div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>  <span class="keyword">auto</span> transformerListNode = elementsNode->first_node(<span class="stringliteral">"TransformerList"</span>);</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>  <span class="keywordflow">if</span>(!transformerListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>  <span class="keyword">auto</span> transfomerNode = transformerListNode->first_node(<span class="stringliteral">"Transfomer"</span>);</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>  <span class="keywordflow">while</span>(transfomerNode) {</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = <span class="keyword">new</span> <a class="code" href="class_transformer.html">Transformer</a>();</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> </div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>  <span class="keyword">auto</span> cadPropNode = transfomerNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span> </div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span> </div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>  <span class="comment">// Get nodes points</span></div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>  std::vector<wxPoint2DDouble> ptsList;</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>  <span class="keyword">auto</span> nodePosList = cadPropNode->first_node(<span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  <span class="keywordflow">if</span>(!nodePosList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>  <span class="keyword">auto</span> nodePos = nodePosList->first_node(<span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>  <span class="keywordflow">while</span>(nodePos) {</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePos, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePos, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>  ptsList.push_back(wxPoint2DDouble(nodePosX, nodePosY));</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>  nodePos = nodePos->next_sibling(<span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>  }</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span> </div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  <span class="comment">// Get parents IDs</span></div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  <span class="keyword">auto</span> parentIDList = cadPropNode->first_node(<span class="stringliteral">"ParentIDList"</span>);</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>  <span class="keywordflow">if</span>(!parentIDList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>  <span class="keyword">auto</span> parentNode = parentIDList->first_node(<span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>  <span class="keywordtype">long</span> parentID[2] = {-1, -1};</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>  <span class="keywordflow">while</span>(parentNode) {</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>  <span class="keywordtype">long</span> index = 0;</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  wxString(parentNode->first_attribute(<span class="stringliteral">"ID"</span>)->value()).ToLong(&index);</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>  wxString(parentNode->value()).ToCLong(&parentID[index]);</div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>  parentNode = parentNode->next_sibling(<span class="stringliteral">"ParentID"</span>);</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>  }</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span> </div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>  <span class="comment">// Set parents (if have)</span></div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>  <a class="code" href="class_bus.html">Bus</a> *parent1, *parent2;</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>  <span class="keywordflow">if</span>(parentID[0] == -1) {</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>  parent1 = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(ptsList[0]);</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>  transformer-><a class="code" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6">AddParent</a>(parent1, ptsList[0]);</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>  parent1 = busList[parentID[0]];</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>  transformer-><a class="code" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6">AddParent</a>(parent1, ptsList[0]);</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>  }</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>  <span class="keywordflow">if</span>(parentID[1] == -1) {</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>  parent2 = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(ptsList[ptsList.size() - 1]);</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>  transformer-><a class="code" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6">AddParent</a>(parent2, ptsList[ptsList.size() - 1]);</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>  parent2 = busList[parentID[1]];</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  transformer-><a class="code" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6">AddParent</a>(parent2, ptsList[ptsList.size() - 1]);</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  }</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span> </div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>  transformer-><a class="code" href="class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5">StartMove</a>(transformer-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  transformer-><a class="code" href="class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8">Move</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span> </div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  <span class="keywordflow">if</span>(parentID[0] == -1) {</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>  transformer-><a class="code" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">RemoveParent</a>(parent1);</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  <span class="keyword">delete</span> parent1;</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>  }</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>  <span class="keywordflow">if</span>(parentID[1] == -1) {</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  transformer-><a class="code" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">RemoveParent</a>(parent2);</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  <span class="keyword">delete</span> parent2;</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  }</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span> </div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>  transformer-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>  transformer-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span> </div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>  <span class="keywordtype">int</span> numRot = angle / transformer-><a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>();</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>  }</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numRot; i++) transformer-><a class="code" href="class_transformer.html#aaa6cc999eb77a94dafaec5debb4db3de">Rotate</a>(clockwise);</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span> </div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>  <span class="keyword">auto</span> electricalProp = transfomerNode->first_node(<span class="stringliteral">"ElectricalProperties"</span>);</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>  <span class="keywordflow">if</span>(!electricalProp) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span> </div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>  transformer-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(GetNodeValueInt(electricalProp, <span class="stringliteral">"IsOnline"</span>));</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transformer->GetElectricalData();</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>  data.name = electricalProp->first_node(<span class="stringliteral">"Name"</span>)->value();</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>  data.primaryNominalVoltage = GetNodeValueDouble(electricalProp, <span class="stringliteral">"PrimaryNominalVoltage"</span>);</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>  data.primaryNominalVoltageUnit =</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>  (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"PrimaryNominalVoltage"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>  data.secondaryNominalVoltage = GetNodeValueDouble(electricalProp, <span class="stringliteral">"SecondaryNominalVoltage"</span>);</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>  data.secondaryNominalVoltageUnit =</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>  (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"SecondaryNominalVoltage"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>  data.nominalPower = GetNodeValueDouble(electricalProp, <span class="stringliteral">"NominalPower"</span>);</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>  data.nominalPowerUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"NominalPower"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>  data.resistance = GetNodeValueDouble(electricalProp, <span class="stringliteral">"Resistance"</span>);</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>  data.resistanceUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"Resistance"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>  data.indReactance = GetNodeValueDouble(electricalProp, <span class="stringliteral">"IndReactance"</span>);</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>  data.indReactanceUnit = (<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetAttributeValueInt(electricalProp, <span class="stringliteral">"IndReactance"</span>, <span class="stringliteral">"UnitID"</span>);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>  data.connection = (TransformerConnection)GetNodeValueInt(electricalProp, <span class="stringliteral">"Connection"</span>);</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>  data.turnsRatio = GetNodeValueDouble(electricalProp, <span class="stringliteral">"TurnsRatio"</span>);</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>  data.phaseShift = GetNodeValueDouble(electricalProp, <span class="stringliteral">"PhaseShift"</span>);</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>  data.useTransformerPower = GetNodeValueInt(electricalProp, <span class="stringliteral">"UseTransfomerPower"</span>);</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span> </div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>  <span class="keyword">auto</span> fault = electricalProp->first_node(<span class="stringliteral">"Fault"</span>);</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>  data.zeroResistance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroResistance"</span>);</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>  data.zeroIndReactance = GetNodeValueDouble(fault, <span class="stringliteral">"ZeroIndReactance"</span>);</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>  data.primaryGrndResistance = GetNodeValueDouble(fault, <span class="stringliteral">"PrimaryGrndResistance"</span>);</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>  data.primaryGrndReactance = GetNodeValueDouble(fault, <span class="stringliteral">"PrimaryGrndReactance"</span>);</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>  data.secondaryGrndResistance = GetNodeValueDouble(fault, <span class="stringliteral">"SecondaryGrndResistance"</span>);</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>  data.secondaryGrndReactance = GetNodeValueDouble(fault, <span class="stringliteral">"SecondaryGrndReactance"</span>);</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> </div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> swData;</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>  <span class="keyword">auto</span> switchingList = electricalProp->first_node(<span class="stringliteral">"SwitchingList"</span>);</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>  <span class="keywordflow">if</span>(!switchingList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>  <span class="keyword">auto</span> swNode = switchingList->first_node(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  <span class="keywordflow">while</span>(swNode) {</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>  swData.<a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>.push_back((<a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b">SwitchingType</a>)GetNodeValueInt(swNode, <span class="stringliteral">"Type"</span>));</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>  swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.push_back(GetNodeValueDouble(swNode, <span class="stringliteral">"Time"</span>));</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>  swNode = swNode->next_sibling(<span class="stringliteral">"Switching"</span>);</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>  }</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>  transformer-><a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(swData);</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> </div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>  transformer->SetElectricaData(data);</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span> </div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>  <span class="keywordflow">if</span>(swData.<a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>.size() != 0) transformer-><a class="code" href="class_power_element.html#a4dbd26d0a7987c30729efffa860debc4">SetDynamicEvent</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span> </div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>  elementList.push_back(transformer);</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>  transformerList.push_back(transformer);</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>  transfomerNode = transfomerNode->next_sibling(<span class="stringliteral">"Transfomer"</span>);</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span> </div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>  m_workspace->SetElementList(elementList);</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> </div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>  <span class="comment">//{ Text</span></div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  <span class="keyword">auto</span> textListNode = elementsNode->first_node(<span class="stringliteral">"TextList"</span>);</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>  <span class="keywordflow">if</span>(!textListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>  <span class="keyword">auto</span> textNode = textListNode->first_node(<span class="stringliteral">"Text"</span>);</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>  <span class="keywordflow">while</span>(textNode) {</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>  <span class="keyword">auto</span> cadPropNode = textNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span> </div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span> </div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>  <a class="code" href="class_text.html">Text</a>* text = <span class="keyword">new</span> <a class="code" href="class_text.html">Text</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span> </div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>  text-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>  text-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span> </div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>  <span class="keyword">auto</span> textProperties = textNode->first_node(<span class="stringliteral">"TextProperties"</span>);</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>  <span class="keywordflow">if</span>(!textProperties) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span> </div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>  text->SetElementType((ElementType)GetNodeValueDouble(textProperties, <span class="stringliteral">"ElementType"</span>));</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>  text->SetDataType((DataType)GetNodeValueDouble(textProperties, <span class="stringliteral">"DataType"</span>));</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>  text->SetUnit((<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a>)GetNodeValueDouble(textProperties, <span class="stringliteral">"DataUnit"</span>));</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>  text->SetDirection(GetNodeValueDouble(textProperties, <span class="stringliteral">"Direction"</span>));</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>  text->SetDecimalPlaces(GetNodeValueDouble(textProperties, <span class="stringliteral">"DecimalPlaces"</span>));</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span> </div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>  text->SetElementNumber(GetNodeValueInt(textProperties, <span class="stringliteral">"ElementNumber"</span>));</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>  <span class="keywordflow">switch</span>(text->GetElementType()) {</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>  <span class="keywordflow">case</span> TYPE_NONE:</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>  <a class="code" href="class_bus.html">Bus</a>* bus = busList[text->GetElementNumber()];</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>  text->SetElement(bus);</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = capacitorList[text->GetElementNumber()];</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>  text->SetElement(capacitor);</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = indMotorList[text->GetElementNumber()];</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>  text->SetElement(indMotor);</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = inductorList[text->GetElementNumber()];</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>  text->SetElement(inductor);</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>  <a class="code" href="class_line.html">Line</a>* line = lineList[text->GetElementNumber()];</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>  text->SetElement(line);</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>  <span class="keywordflow">case</span> TYPE_LOAD: {</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>  <a class="code" href="class_load.html">Load</a>* load = loadList[text->GetElementNumber()];</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>  text->SetElement(load);</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = syncGeneratorList[text->GetElementNumber()];</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>  text->SetElement(syncGenerator);</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = syncMotorList[text->GetElementNumber()];</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>  text->SetElement(syncMotor);</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = transformerList[text->GetElementNumber()];</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>  text->SetElement(transformer);</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>  }</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span> </div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>  <span class="keywordtype">int</span> numRot = angle / text-><a class="code" href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">GetRotationAngle</a>();</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>  <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>;</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>  <span class="keywordflow">if</span>(numRot < 0) {</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>  numRot = std::abs(numRot);</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>  clockwise = <span class="keyword">false</span>;</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>  }</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numRot; i++) text-><a class="code" href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Rotate</a>(clockwise);</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span> </div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>  textList.push_back(text);</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>  textNode = textNode->next_sibling(<span class="stringliteral">"Text"</span>);</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span> </div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>  m_workspace->SetTextList(textList);</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span> }</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span> </div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span> <span class="keywordtype">void</span> FileHanding::SaveControl(wxFileName path)</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span> {</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>  <span class="comment">// Same process present in SaveProject():</span></div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>  std::ofstream writeProjectsFile(path.GetFullPath());</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>  writeProjectsFile.close();</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span> </div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>  rapidxml::xml_document<> doc;</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>  rapidxml::file<> xmlFile(path.GetFullPath().mb_str());</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>  doc.parse<0>(xmlFile.data());</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span> </div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>  rapidxml::xml_node<>* decl = doc.allocate_node(rapidxml::node_declaration);</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>  rapidxml::xml_attribute<>* ver = doc.allocate_attribute(<span class="stringliteral">"version"</span>, <span class="stringliteral">"1.0"</span>);</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>  rapidxml::xml_attribute<>* encoding = doc.allocate_attribute(<span class="stringliteral">"encoding"</span>, <span class="stringliteral">"utf-8"</span>);</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>  decl->append_attribute(ver);</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>  decl->append_attribute(encoding);</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>  doc.append_node(decl);</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span> </div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>  rapidxml::xml_node<>* rootNode = doc.allocate_node(rapidxml::node_element, <span class="stringliteral">"Control"</span>);</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>  doc.append_node(rootNode);</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span> </div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>  rapidxml::xml_node<>* projectNameNode = AppendNode(doc, rootNode, <span class="stringliteral">"Name"</span>);</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>  SetNodeValue(doc, projectNameNode, path.GetName());</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span> </div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>  <span class="keyword">auto</span> elementsNode = AppendNode(doc, rootNode, <span class="stringliteral">"ControlElements"</span>);</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>  SaveControlElements(doc, elementsNode);</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>  std::ofstream writeXML(path.GetFullPath());</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>  writeXML << doc;</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>  writeXML.close();</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span> }</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span> </div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span> <span class="keywordtype">bool</span> FileHanding::OpenControl(wxFileName path,</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>  std::vector<ControlElement*>& ctrlElementList,</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>  std::vector<ConnectionLine*>& ctrlConnectionList)</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span> {</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>  rapidxml::xml_document<> doc;</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>  rapidxml::file<> xmlFile(path.GetFullPath().mb_str());</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span> </div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>  doc.parse<0>(xmlFile.data());</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span> </div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>  <span class="keyword">auto</span> projectNode = doc.first_node(<span class="stringliteral">"Control"</span>);</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>  <span class="keywordflow">if</span>(!projectNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>  <span class="comment">// auto nameNode = projectNode->first_node("Name");</span></div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>  <span class="comment">// if(!nameNode) return false;</span></div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>  <span class="comment">// m_controlEditor->SetName(nameNode->value());</span></div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span> </div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>  <span class="comment">// Open elements</span></div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>  <span class="keyword">auto</span> elementsNode = projectNode->first_node(<span class="stringliteral">"ControlElements"</span>);</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>  <span class="keywordflow">if</span>(!elementsNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span> </div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>  <span class="comment">// auto elementsNode = AppendNode(doc, rootNode, "ControlElements");</span></div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlElementContainer = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>  <span class="keywordflow">if</span>(!OpenControlElements(doc, elementsNode, ctrlElementContainer)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>  ctrlElementList = ctrlElementContainer->GetControlElementsList();</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>  ctrlConnectionList = ctrlElementContainer->GetConnectionLineList();</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span> }</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span> </div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span> <span class="keywordtype">void</span> FileHanding::SaveControlElements(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>  rapidxml::xml_node<>* elementsNode,</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlContainer)</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span> {</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>  <span class="keywordflow">if</span>(!ctrlContainer) {</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>  ctrlContainer = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>  ctrlContainer->FillContainer(m_controlEditor);</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>  }</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span> </div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>  <span class="comment">//{ Constant</span></div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>  <span class="keyword">auto</span> constsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"ConstantList"</span>);</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>  <span class="keyword">auto</span> constList = ctrlContainer->GetConstantList();</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = constList.begin(), itEnd = constList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>  <a class="code" href="class_constant.html">Constant</a>* constant = *it;</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>  <span class="keyword">auto</span> constNode = AppendNode(doc, constsNode, <span class="stringliteral">"Constant"</span>);</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>  SetNodeAttribute(doc, constNode, <span class="stringliteral">"ID"</span>, constant-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>());</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, constNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>  SetNodeValue(doc, posX, constant-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>  SetNodeValue(doc, posY, constant-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>  SetNodeValue(doc, width, constant-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>  SetNodeValue(doc, height, constant-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>  SetNodeValue(doc, angle, constant-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span> </div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, constNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>  SaveControlNodes(doc, nodeList, constant->GetNodeList());</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span> </div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>  <span class="keyword">auto</span> value = AppendNode(doc, constNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>  SetNodeValue(doc, value, constant->GetValue());</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> </div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>  <span class="comment">//{ Exponential</span></div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>  <span class="keyword">auto</span> expsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"ExponentialList"</span>);</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>  <span class="keyword">auto</span> expList = ctrlContainer->GetExponentialList();</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = expList.begin(), itEnd = expList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>  <a class="code" href="class_exponential.html">Exponential</a>* exponential = *it;</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>  <span class="keyword">auto</span> expNode = AppendNode(doc, expsNode, <span class="stringliteral">"Exponential"</span>);</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>  SetNodeAttribute(doc, expNode, <span class="stringliteral">"ID"</span>, exponential-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>());</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, expNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>  SetNodeValue(doc, posX, exponential-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>  SetNodeValue(doc, posY, exponential-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>  SetNodeValue(doc, width, exponential-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>  SetNodeValue(doc, height, exponential-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>  SetNodeValue(doc, angle, exponential-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span> </div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, expNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>  SaveControlNodes(doc, nodeList, exponential->GetNodeList());</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span> </div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>  <span class="keywordtype">double</span> a, b;</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>  exponential->GetValues(a, b);</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>  <span class="keyword">auto</span> value = AppendNode(doc, expNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>  <span class="keyword">auto</span> aValue = AppendNode(doc, value, <span class="stringliteral">"A"</span>);</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>  SetNodeValue(doc, aValue, a);</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>  <span class="keyword">auto</span> bValue = AppendNode(doc, value, <span class="stringliteral">"B"</span>);</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>  SetNodeValue(doc, bValue, b);</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span> </div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>  <span class="comment">//{ Gain</span></div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>  <span class="keyword">auto</span> gainsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"GainList"</span>);</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>  <span class="keyword">auto</span> gainList = ctrlContainer->GetGainList();</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = gainList.begin(), itEnd = gainList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>  <a class="code" href="class_gain.html">Gain</a>* gain = *it;</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>  <span class="keyword">auto</span> gainNode = AppendNode(doc, gainsNode, <span class="stringliteral">"Gain"</span>);</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>  SetNodeAttribute(doc, gainNode, <span class="stringliteral">"ID"</span>, gain-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>());</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, gainNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>  SetNodeValue(doc, posX, gain-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>  SetNodeValue(doc, posY, gain-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>  SetNodeValue(doc, width, gain-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>  SetNodeValue(doc, height, gain-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>  SetNodeValue(doc, angle, gain-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span> </div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, gainNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>  SaveControlNodes(doc, nodeList, gain->GetNodeList());</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span> </div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>  <span class="keyword">auto</span> value = AppendNode(doc, gainNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>  SetNodeValue(doc, value, gain->GetValue());</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span> </div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>  <span class="comment">//{ IO</span></div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>  <span class="keyword">auto</span> iosNode = AppendNode(doc, elementsNode, <span class="stringliteral">"IOList"</span>);</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>  <span class="keyword">auto</span> ioList = ctrlContainer->GetIOControlList();</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = ioList.begin(), itEnd = ioList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* io = *it;</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>  <span class="keyword">auto</span> ioNode = AppendNode(doc, iosNode, <span class="stringliteral">"IO"</span>);</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>  SetNodeAttribute(doc, ioNode, <span class="stringliteral">"ID"</span>, io-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>());</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, ioNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>  SetNodeValue(doc, posX, io-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>  SetNodeValue(doc, posY, io-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>  SetNodeValue(doc, width, io-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>  SetNodeValue(doc, height, io-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>  SetNodeValue(doc, angle, io-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span> </div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, ioNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>  SaveControlNodes(doc, nodeList, io->GetNodeList());</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span> </div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>  <span class="keyword">auto</span> value = AppendNode(doc, ioNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>  SetNodeValue(doc, value, io->GetValue());</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>  <span class="keyword">auto</span> ioFlags = AppendNode(doc, ioNode, <span class="stringliteral">"IOFlags"</span>);</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>  SetNodeValue(doc, ioFlags, io->GetIOFlags());</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span> </div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>  <span class="comment">//{ Limiter</span></div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>  <span class="keyword">auto</span> limitersNode = AppendNode(doc, elementsNode, <span class="stringliteral">"LimiterList"</span>);</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>  <span class="keyword">auto</span> limiterList = ctrlContainer->GetLimiterList();</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = limiterList.begin(), itEnd = limiterList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>  <a class="code" href="class_limiter.html">Limiter</a>* limiter = *it;</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>  <span class="keyword">auto</span> limiterNode = AppendNode(doc, limitersNode, <span class="stringliteral">"Limiter"</span>);</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>  SetNodeAttribute(doc, limiterNode, <span class="stringliteral">"ID"</span>, limiter-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>());</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, limiterNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>  SetNodeValue(doc, posX, limiter-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>  SetNodeValue(doc, posY, limiter-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>  SetNodeValue(doc, width, limiter-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>  SetNodeValue(doc, height, limiter-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>  SetNodeValue(doc, angle, limiter-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span> </div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, limiterNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>  SaveControlNodes(doc, nodeList, limiter->GetNodeList());</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span> </div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>  <span class="keyword">auto</span> upLimit = AppendNode(doc, limiterNode, <span class="stringliteral">"UpperLimit"</span>);</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>  SetNodeValue(doc, upLimit, limiter->GetUpLimit());</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>  <span class="keyword">auto</span> lowLimit = AppendNode(doc, limiterNode, <span class="stringliteral">"LowerLimit"</span>);</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>  SetNodeValue(doc, lowLimit, limiter->GetLowLimit());</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span> </div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>  <span class="comment">//{ Multiplier</span></div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>  <span class="keyword">auto</span> multipliersNode = AppendNode(doc, elementsNode, <span class="stringliteral">"MultiplierList"</span>);</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>  <span class="keyword">auto</span> multiplierList = ctrlContainer->GetMultiplierList();</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = multiplierList.begin(), itEnd = multiplierList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>  <a class="code" href="class_multiplier.html">Multiplier</a>* multiplier = *it;</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>  <span class="keyword">auto</span> multiplierNode = AppendNode(doc, multipliersNode, <span class="stringliteral">"Multiplier"</span>);</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>  SetNodeAttribute(doc, multiplierNode, <span class="stringliteral">"ID"</span>, multiplier-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>());</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, multiplierNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>  SetNodeValue(doc, posX, multiplier-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>  SetNodeValue(doc, posY, multiplier-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>  SetNodeValue(doc, width, multiplier-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>  SetNodeValue(doc, height, multiplier-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>  SetNodeValue(doc, angle, multiplier-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span> </div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, multiplierNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>  SaveControlNodes(doc, nodeList, multiplier->GetNodeList());</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>  } <span class="comment">//}</span></div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span> </div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>  <span class="comment">//{ Rate limiter</span></div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>  <span class="keyword">auto</span> rateLimitersNode = AppendNode(doc, elementsNode, <span class="stringliteral">"RateLimiterList"</span>);</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>  <span class="keyword">auto</span> rateLimiterList = ctrlContainer->GetRateLimiterList();</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = rateLimiterList.begin(), itEnd = rateLimiterList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>  <a class="code" href="class_rate_limiter.html">RateLimiter</a>* rateLimiter = *it;</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>  <span class="keyword">auto</span> rateLimiterNode = AppendNode(doc, rateLimitersNode, <span class="stringliteral">"RateLimiter"</span>);</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>  SetNodeAttribute(doc, rateLimiterNode, <span class="stringliteral">"ID"</span>, rateLimiter-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>());</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, rateLimiterNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>  SetNodeValue(doc, posX, rateLimiter-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>  SetNodeValue(doc, posY, rateLimiter-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>  SetNodeValue(doc, width, rateLimiter-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>  SetNodeValue(doc, height, rateLimiter-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>  SetNodeValue(doc, angle, rateLimiter-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span> </div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, rateLimiterNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>  SaveControlNodes(doc, nodeList, rateLimiter->GetNodeList());</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span> </div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>  <span class="keyword">auto</span> upLimit = AppendNode(doc, rateLimiterNode, <span class="stringliteral">"UpperLimit"</span>);</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>  SetNodeValue(doc, upLimit, rateLimiter->GetUpLimit());</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>  <span class="keyword">auto</span> lowLimit = AppendNode(doc, rateLimiterNode, <span class="stringliteral">"LowerLimit"</span>);</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>  SetNodeValue(doc, lowLimit, rateLimiter->GetLowLimit());</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>  } <span class="comment">//}</span></div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span> </div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>  <span class="comment">//{ Sum</span></div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>  <span class="keyword">auto</span> sumsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"SumList"</span>);</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>  <span class="keyword">auto</span> sumList = ctrlContainer->GetSumList();</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = sumList.begin(), itEnd = sumList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>  <a class="code" href="class_sum.html">Sum</a>* sum = *it;</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>  <span class="keyword">auto</span> sumNode = AppendNode(doc, sumsNode, <span class="stringliteral">"Sum"</span>);</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>  SetNodeAttribute(doc, sumNode, <span class="stringliteral">"ID"</span>, sum-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>());</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, sumNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>  SetNodeValue(doc, posX, sum-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>  SetNodeValue(doc, posY, sum-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>  SetNodeValue(doc, width, sum-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>  SetNodeValue(doc, height, sum-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>  SetNodeValue(doc, angle, sum-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span> </div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, sumNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>  SaveControlNodes(doc, nodeList, sum->GetNodeList());</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span> </div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>  <span class="keyword">auto</span> signsNode = AppendNode(doc, sumNode, <span class="stringliteral">"Signs"</span>);</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>  <span class="keyword">auto</span> signs = sum->GetSignalList();</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)signs.size(); ++i) {</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>  <span class="keyword">auto</span> value = AppendNode(doc, signsNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>  SetNodeValue(doc, value, static_cast<int>(signs[i]));</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>  }</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span> </div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>  } <span class="comment">//}</span></div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span> </div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>  <span class="comment">//{ Transfer function</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>  <span class="keyword">auto</span> tfsNode = AppendNode(doc, elementsNode, <span class="stringliteral">"TransferFunctionList"</span>);</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>  <span class="keyword">auto</span> tfList = ctrlContainer->GetTFList();</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = tfList.begin(), itEnd = tfList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* tf = *it;</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>  <span class="keyword">auto</span> tfNode = AppendNode(doc, tfsNode, <span class="stringliteral">"TransferFunction"</span>);</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>  SetNodeAttribute(doc, tfNode, <span class="stringliteral">"ID"</span>, tf-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>());</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, tfNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>  <span class="keyword">auto</span> position = AppendNode(doc, cadProp, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>  <span class="keyword">auto</span> posX = AppendNode(doc, position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>  SetNodeValue(doc, posX, tf-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x);</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>  <span class="keyword">auto</span> posY = AppendNode(doc, position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>  SetNodeValue(doc, posY, tf-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y);</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>  <span class="keyword">auto</span> size = AppendNode(doc, cadProp, <span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>  <span class="keyword">auto</span> width = AppendNode(doc, size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>  SetNodeValue(doc, width, tf-><a class="code" href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">GetWidth</a>());</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>  <span class="keyword">auto</span> height = AppendNode(doc, size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>  SetNodeValue(doc, height, tf-><a class="code" href="class_element.html#a616c73ff20402109ede68579094acc3d">GetHeight</a>());</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>  <span class="keyword">auto</span> angle = AppendNode(doc, cadProp, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>  SetNodeValue(doc, angle, tf-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span> </div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>  <span class="comment">// Nodes</span></div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>  <span class="keyword">auto</span> nodeList = AppendNode(doc, tfNode, <span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>  SaveControlNodes(doc, nodeList, tf->GetNodeList());</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span> </div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>  <span class="comment">// Control properties</span></div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>  <span class="keyword">auto</span> numeratorNode = AppendNode(doc, tfNode, <span class="stringliteral">"Numerator"</span>);</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>  <span class="keyword">auto</span> numerator = tf->GetNumerator();</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)numerator.size(); ++i) {</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>  <span class="keyword">auto</span> value = AppendNode(doc, numeratorNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>  SetNodeValue(doc, value, numerator[i]);</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>  }</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>  <span class="keyword">auto</span> denominatorNode = AppendNode(doc, tfNode, <span class="stringliteral">"Denominator"</span>);</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>  <span class="keyword">auto</span> denominator = tf->GetDenominator();</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)denominator.size(); ++i) {</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>  <span class="keyword">auto</span> value = AppendNode(doc, denominatorNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>  SetNodeValue(doc, value, denominator[i]);</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>  }</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>  } <span class="comment">//}</span></div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span> </div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>  <span class="comment">//{ Connection line</span></div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>  <span class="keyword">auto</span> cLinesNode = AppendNode(doc, elementsNode, <span class="stringliteral">"ConnectionList"</span>);</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>  <span class="keyword">auto</span> connLineList = ctrlContainer->GetConnectionLineList();</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = connLineList.begin(), itEnd = connLineList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = *it;</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>  <span class="keyword">auto</span> cLineNode = AppendNode(doc, cLinesNode, <span class="stringliteral">"Connection"</span>);</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>  SetNodeAttribute(doc, cLineNode, <span class="stringliteral">"ID"</span>, cLine-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>());</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span> </div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>  <span class="comment">// CAD properties</span></div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>  <span class="keyword">auto</span> cadProp = AppendNode(doc, cLineNode, <span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>  <span class="keyword">auto</span> offset = AppendNode(doc, cadProp, <span class="stringliteral">"Offset"</span>);</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>  SetNodeValue(doc, offset, cLine->GetOffset());</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span> </div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>  <span class="comment">// Parent list</span></div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>  <span class="keyword">auto</span> parentsNode = AppendNode(doc, cLineNode, <span class="stringliteral">"ParentList"</span>);</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>  <span class="keyword">auto</span> parentList = cLine-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>  <span class="keywordtype">int</span> nodeIndex = 0;</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itP = parentList.begin(), itPEnd = parentList.end(); itP != itPEnd; ++itP) {</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>  <a class="code" href="class_element.html">Element</a>* parent = *itP;</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>  <span class="keyword">auto</span> parentNode = AppendNode(doc, parentsNode, <span class="stringliteral">"Parent"</span>);</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>  <span class="keyword">auto</span> elementID = AppendNode(doc, parentNode, <span class="stringliteral">"ElementID"</span>);</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>  SetNodeValue(doc, elementID, parent-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>());</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>  <span class="keyword">auto</span> nodeID = AppendNode(doc, parentNode, <span class="stringliteral">"NodeID"</span>);</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>  SetNodeValue(doc, nodeID, cLine->GetNodeList()[nodeIndex]->GetID());</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>  nodeIndex++;</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>  }</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span> </div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>  <span class="keyword">auto</span> parentLine = AppendNode(doc, cLineNode, <span class="stringliteral">"ParentLine"</span>);</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>  <span class="keywordflow">if</span>(cLine->GetParentLine()) {</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* parent = cLine->GetParentLine();</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>  SetNodeAttribute(doc, parentLine, <span class="stringliteral">"ID"</span>, parent-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>());</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>  SetNodeAttribute(doc, parentLine, <span class="stringliteral">"ID"</span>, -1);</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>  }</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>  } <span class="comment">//}</span></div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span> }</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span> </div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span> <span class="keywordtype">bool</span> FileHanding::OpenControlElements(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>  rapidxml::xml_node<>* elementsNode,</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlContainer)</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span> {</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>  std::vector<ControlElement*> elementList;</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>  std::vector<ConnectionLine*> connectionList;</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span> </div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>  <span class="comment">//{ Constant</span></div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>  <span class="keyword">auto</span> constListNode = elementsNode->first_node(<span class="stringliteral">"ConstantList"</span>);</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>  <span class="keywordflow">if</span>(!constListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>  <span class="keyword">auto</span> constNode = constListNode->first_node(<span class="stringliteral">"Constant"</span>);</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>  <span class="keywordflow">while</span>(constNode) {</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(constNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>  <a class="code" href="class_constant.html">Constant</a>* constant = <span class="keyword">new</span> <a class="code" href="class_constant.html">Constant</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span> </div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>  <span class="keyword">auto</span> cadPropNode = constNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span> </div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span> </div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>  <span class="keywordtype">double</span> value = GetNodeValueDouble(constNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span> </div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>  constant-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>  constant-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>  constant-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>  constant-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>  constant-><a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(constant-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span> </div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>  constant->SetValue(value);</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span> </div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>  <span class="keywordflow">if</span>(!OpenControlNodeList(constNode, nodeVector)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span> </div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>  constant->SetNodeList(nodeVector);</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>  constant->UpdatePoints();</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>  elementList.push_back(constant);</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span> </div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>  constNode = constNode->next_sibling(<span class="stringliteral">"Constant"</span>);</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>  } <span class="comment">//}</span></div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span> </div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>  <span class="comment">//{ Exponential</span></div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>  <span class="keyword">auto</span> expListNode = elementsNode->first_node(<span class="stringliteral">"ExponentialList"</span>);</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>  <span class="keywordflow">if</span>(!expListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>  <span class="keyword">auto</span> expNode = expListNode->first_node(<span class="stringliteral">"Exponential"</span>);</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>  <span class="keywordflow">while</span>(expNode) {</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(expNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>  <a class="code" href="class_exponential.html">Exponential</a>* exponential = <span class="keyword">new</span> <a class="code" href="class_exponential.html">Exponential</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span> </div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>  <span class="keyword">auto</span> cadPropNode = expNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span> </div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span> </div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>  <span class="keyword">auto</span> value = expNode->first_node(<span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>  <span class="keywordtype">double</span> a = GetNodeValueDouble(value, <span class="stringliteral">"A"</span>);</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>  <span class="keywordtype">double</span> b = GetNodeValueDouble(value, <span class="stringliteral">"B"</span>);</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span> </div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>  exponential-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>  exponential-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>  exponential-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>  exponential-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>  exponential-><a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(exponential-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span> </div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>  exponential->SetValues(a, b);</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span> </div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>  <span class="keywordflow">if</span>(!OpenControlNodeList(expNode, nodeVector)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span> </div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>  exponential->SetNodeList(nodeVector);</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>  exponential->UpdatePoints();</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>  elementList.push_back(exponential);</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span> </div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>  expNode = expNode->next_sibling(<span class="stringliteral">"Exponential"</span>);</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>  } <span class="comment">//}</span></div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span> </div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>  <span class="comment">//{ Gain</span></div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>  <span class="keyword">auto</span> gainListNode = elementsNode->first_node(<span class="stringliteral">"GainList"</span>);</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>  <span class="keywordflow">if</span>(!gainListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>  <span class="keyword">auto</span> gainNode = gainListNode->first_node(<span class="stringliteral">"Gain"</span>);</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>  <span class="keywordflow">while</span>(gainNode) {</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(gainNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>  <a class="code" href="class_gain.html">Gain</a>* gain = <span class="keyword">new</span> <a class="code" href="class_gain.html">Gain</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span> </div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>  <span class="keyword">auto</span> cadPropNode = gainNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span> </div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span> </div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>  <span class="keywordtype">double</span> value = GetNodeValueDouble(gainNode, <span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span> </div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>  gain-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>  gain-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>  gain-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>  gain-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>  gain->SetValue(value);</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>  gain-><a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(gain-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span> </div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>  <span class="keywordflow">if</span>(!OpenControlNodeList(gainNode, nodeVector)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span> </div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>  gain->SetNodeList(nodeVector);</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>  gain->UpdatePoints();</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>  elementList.push_back(gain);</div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span> </div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>  gainNode = gainNode->next_sibling(<span class="stringliteral">"Gain"</span>);</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>  }</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>  <span class="comment">//}</span></div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span> </div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>  <span class="comment">//{ IO</span></div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>  <span class="keyword">auto</span> ioListNode = elementsNode->first_node(<span class="stringliteral">"IOList"</span>);</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>  <span class="keywordflow">if</span>(!ioListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>  <span class="keyword">auto</span> ioNode = ioListNode->first_node(<span class="stringliteral">"IO"</span>);</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>  <span class="keywordflow">while</span>(ioNode) {</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(ioNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span> </div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>  <span class="keyword">auto</span> cadPropNode = ioNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span> </div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span> </div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>  <span class="keywordflow">if</span>(!OpenControlNodeList(ioNode, nodeVector)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span> </div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>  IOControl::IOFlags value = <span class="keyword">static_cast<</span>IOControl::IOFlags<span class="keyword">></span>(GetNodeValueInt(ioNode, <span class="stringliteral">"Value"</span>));</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>  <span class="keywordtype">int</span> ioFlags = GetNodeValueInt(ioNode, <span class="stringliteral">"IOFlags"</span>);</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span> </div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* io = <span class="keyword">new</span> <a class="code" href="class_i_o_control.html">IOControl</a>(ioFlags, <span class="keywordtype">id</span>);</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span> </div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>  io-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>  io-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>  io-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>  io-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>  io->SetValue(value);</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>  io-><a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(io-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>  io->SetNodeList(nodeVector);</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>  io->UpdatePoints();</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>  elementList.push_back(io);</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span> </div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>  ioNode = ioNode->next_sibling(<span class="stringliteral">"IO"</span>);</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>  }</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>  <span class="comment">//}</span></div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span> </div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>  <span class="comment">//{ Limiter</span></div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>  <span class="keyword">auto</span> limiterListNode = elementsNode->first_node(<span class="stringliteral">"LimiterList"</span>);</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>  <span class="keywordflow">if</span>(!limiterListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>  <span class="keyword">auto</span> limiterNode = limiterListNode->first_node(<span class="stringliteral">"Limiter"</span>);</div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>  <span class="keywordflow">while</span>(limiterNode) {</div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(limiterNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>  <a class="code" href="class_limiter.html">Limiter</a>* limiter = <span class="keyword">new</span> <a class="code" href="class_limiter.html">Limiter</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span> </div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>  <span class="keyword">auto</span> cadPropNode = limiterNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span> </div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span> </div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>  <span class="keywordtype">double</span> upLimit = GetNodeValueDouble(limiterNode, <span class="stringliteral">"UpperLimit"</span>);</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>  <span class="keywordtype">double</span> lowLimit = GetNodeValueDouble(limiterNode, <span class="stringliteral">"LowerLimit"</span>);</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span> </div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>  <span class="keywordflow">if</span>(!OpenControlNodeList(limiterNode, nodeVector)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span> </div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>  limiter-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>  limiter-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>  limiter-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>  limiter-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>  limiter->SetUpLimit(upLimit);</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>  limiter->SetLowLimit(lowLimit);</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span> </div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>  limiter-><a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(limiter-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>  limiter->SetNodeList(nodeVector);</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>  limiter->UpdatePoints();</div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>  elementList.push_back(limiter);</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span> </div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>  limiterNode = limiterNode->next_sibling(<span class="stringliteral">"Limiter"</span>);</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>  }</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>  <span class="comment">//}</span></div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span> </div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>  <span class="comment">//{ Multiplier</span></div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>  <span class="keyword">auto</span> multiplierListNode = elementsNode->first_node(<span class="stringliteral">"MultiplierList"</span>);</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>  <span class="keywordflow">if</span>(!multiplierListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>  <span class="keyword">auto</span> multiplierNode = multiplierListNode->first_node(<span class="stringliteral">"Multiplier"</span>);</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>  <span class="keywordflow">while</span>(multiplierNode) {</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(multiplierNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>  <a class="code" href="class_multiplier.html">Multiplier</a>* multiplier = <span class="keyword">new</span> <a class="code" href="class_multiplier.html">Multiplier</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span> </div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>  <span class="keyword">auto</span> cadPropNode = multiplierNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span> </div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span> </div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>  <span class="keywordflow">if</span>(!OpenControlNodeList(multiplierNode, nodeVector)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span> </div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>  multiplier-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>  multiplier-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>  multiplier-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>  multiplier-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span> </div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>  multiplier-><a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(multiplier-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>  multiplier->SetNodeList(nodeVector);</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>  multiplier->UpdatePoints();</div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>  elementList.push_back(multiplier);</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span> </div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>  multiplierNode = multiplierNode->next_sibling(<span class="stringliteral">"Multiplier"</span>);</div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>  }</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>  <span class="comment">//}</span></div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span> </div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>  <span class="comment">//{ Rate limiter</span></div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>  <span class="keyword">auto</span> rateLimiterListNode = elementsNode->first_node(<span class="stringliteral">"RateLimiterList"</span>);</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>  <span class="keywordflow">if</span>(!rateLimiterListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>  <span class="keyword">auto</span> rateLimiterNode = rateLimiterListNode->first_node(<span class="stringliteral">"RateLimiter"</span>);</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>  <span class="keywordflow">while</span>(rateLimiterNode) {</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(rateLimiterNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>  <a class="code" href="class_rate_limiter.html">RateLimiter</a>* limiter = <span class="keyword">new</span> <a class="code" href="class_rate_limiter.html">RateLimiter</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span> </div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>  <span class="keyword">auto</span> cadPropNode = rateLimiterNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span> </div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span> </div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>  <span class="keywordtype">double</span> upLimit = GetNodeValueDouble(rateLimiterNode, <span class="stringliteral">"UpperLimit"</span>);</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>  <span class="keywordtype">double</span> lowLimit = GetNodeValueDouble(rateLimiterNode, <span class="stringliteral">"LowerLimit"</span>);</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span> </div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>  <span class="keywordflow">if</span>(!OpenControlNodeList(rateLimiterNode, nodeVector)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span> </div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>  limiter-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>  limiter-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>  limiter-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>  limiter-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>  limiter->SetUpLimit(upLimit);</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>  limiter->SetLowLimit(lowLimit);</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span> </div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>  limiter-><a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(limiter-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>  limiter->SetNodeList(nodeVector);</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>  limiter->UpdatePoints();</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>  elementList.push_back(limiter);</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span> </div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>  rateLimiterNode = rateLimiterNode->next_sibling(<span class="stringliteral">"RateLimiter"</span>);</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>  }</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>  <span class="comment">//}</span></div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span> </div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>  <span class="comment">//{ Sum</span></div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>  <span class="keyword">auto</span> sumListNode = elementsNode->first_node(<span class="stringliteral">"SumList"</span>);</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>  <span class="keywordflow">if</span>(!sumListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>  <span class="keyword">auto</span> sumNode = sumListNode->first_node(<span class="stringliteral">"Sum"</span>);</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>  <span class="keywordflow">while</span>(sumNode) {</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(sumNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>  <a class="code" href="class_sum.html">Sum</a>* sum = <span class="keyword">new</span> <a class="code" href="class_sum.html">Sum</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span> </div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>  <span class="keyword">auto</span> cadPropNode = sumNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span> </div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span> </div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>  std::vector<Sum::Signal> signs;</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>  <span class="keyword">auto</span> signsNode = sumNode->first_node(<span class="stringliteral">"Signs"</span>);</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>  <span class="keyword">auto</span> sign = signsNode->first_node(<span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>  <span class="keywordflow">while</span>(sign) {</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  <span class="keywordtype">long</span> value;</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>  wxString(sign->value()).ToCLong(&value);</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>  signs.push_back(static_cast<Sum::Signal>(value));</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>  sign = sign->next_sibling(<span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>  }</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>  sum->SetSignalList(signs);</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span> </div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>  <span class="keywordflow">if</span>(!OpenControlNodeList(sumNode, nodeVector)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span> </div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>  sum-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>  sum-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>  sum-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>  sum-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span> </div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>  sum-><a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(sum-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  sum->SetNodeList(nodeVector);</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>  sum->UpdatePoints();</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>  elementList.push_back(sum);</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span> </div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>  sumNode = sumNode->next_sibling(<span class="stringliteral">"Sum"</span>);</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>  }</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>  <span class="comment">//}</span></div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span> </div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>  <span class="comment">//{ Transfer function</span></div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>  <span class="keyword">auto</span> tfListNode = elementsNode->first_node(<span class="stringliteral">"TransferFunctionList"</span>);</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>  <span class="keywordflow">if</span>(!tfListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>  <span class="keyword">auto</span> tfNode = tfListNode->first_node(<span class="stringliteral">"TransferFunction"</span>);</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  <span class="keywordflow">while</span>(tfNode) {</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(tfNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* tf = <span class="keyword">new</span> <a class="code" href="class_transfer_function.html">TransferFunction</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span> </div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>  <span class="keyword">auto</span> cadPropNode = tfNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span> </div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>  <span class="keyword">auto</span> position = cadPropNode->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  <span class="keywordtype">double</span> posX = GetNodeValueDouble(position, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>  <span class="keywordtype">double</span> posY = GetNodeValueDouble(position, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  <span class="keyword">auto</span> size = cadPropNode->first_node(<span class="stringliteral">"Size"</span>);</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>  <span class="keywordtype">double</span> width = GetNodeValueDouble(size, <span class="stringliteral">"Width"</span>);</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>  <span class="keywordtype">double</span> height = GetNodeValueDouble(size, <span class="stringliteral">"Height"</span>);</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  <span class="keywordtype">double</span> angle = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span> </div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>  std::vector<double> numerator, denominator;</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>  <span class="keyword">auto</span> numeratorNode = tfNode->first_node(<span class="stringliteral">"Numerator"</span>);</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>  <span class="keyword">auto</span> nValue = numeratorNode->first_node(<span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>  <span class="keywordflow">while</span>(nValue) {</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>  <span class="keywordtype">double</span> value = 0.0;</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>  wxString(nValue->value()).ToCDouble(&value);</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>  numerator.push_back(value);</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>  nValue = nValue->next_sibling(<span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>  }</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>  <span class="keyword">auto</span> denominatorNode = tfNode->first_node(<span class="stringliteral">"Denominator"</span>);</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>  <span class="keyword">auto</span> dValue = denominatorNode->first_node(<span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>  <span class="keywordflow">while</span>(dValue) {</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>  <span class="keywordtype">double</span> value = 0.0;</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>  wxString(dValue->value()).ToCDouble(&value);</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>  denominator.push_back(value);</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>  dValue = dValue->next_sibling(<span class="stringliteral">"Value"</span>);</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>  }</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span> </div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>  std::vector<Node*> nodeVector;</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>  <span class="keywordflow">if</span>(!OpenControlNodeList(tfNode, nodeVector)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span> </div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>  tf-><a class="code" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(width);</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>  tf-><a class="code" href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">SetHeight</a>(height);</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>  tf-><a class="code" href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">SetAngle</a>(angle);</div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>  tf-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(wxPoint2DDouble(posX, posY));</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span> </div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>  tf->SetNumerator(numerator);</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>  tf->SetDenominator(denominator);</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span> </div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>  tf-><a class="code" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(tf-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>());</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>  tf->SetNodeList(nodeVector);</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span> </div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>  tf->UpdateTFText();</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span> </div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>  elementList.push_back(tf);</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span> </div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>  tfNode = tfNode->next_sibling(<span class="stringliteral">"TransferFunction"</span>);</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>  }</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>  <span class="comment">//}</span></div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span> </div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>  <span class="comment">// Connection line</span></div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>  <span class="keyword">auto</span> connectionListNode = elementsNode->first_node(<span class="stringliteral">"ConnectionList"</span>);</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>  <span class="keywordflow">if</span>(!connectionListNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>  <span class="keyword">auto</span> connNode = connectionListNode->first_node(<span class="stringliteral">"Connection"</span>);</div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>  <span class="keywordflow">while</span>(connNode) {</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = NULL;</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = GetAttributeValueInt(connNode, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span> </div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>  <span class="keyword">auto</span> cadPropNode = connNode->first_node(<span class="stringliteral">"CADProperties"</span>);</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>  <span class="keywordflow">if</span>(!cadPropNode) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>  <span class="keywordtype">double</span> offset = GetNodeValueDouble(cadPropNode, <span class="stringliteral">"Offset"</span>);</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span> </div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>  <span class="keyword">auto</span> parentList = connNode->first_node(<span class="stringliteral">"ParentList"</span>);</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>  <span class="keywordflow">if</span>(!parentList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span> </div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>  <span class="keyword">auto</span> parentNode = parentList->first_node(<span class="stringliteral">"Parent"</span>);</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>  <span class="keywordtype">bool</span> firstNode = <span class="keyword">true</span>;</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>  <span class="keywordflow">while</span>(parentNode) {</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>  <span class="keywordtype">int</span> elementID = GetNodeValueInt(parentNode, <span class="stringliteral">"ElementID"</span>);</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>  <span class="keywordtype">int</span> nodeID = GetNodeValueInt(parentNode, <span class="stringliteral">"NodeID"</span>);</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span> </div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = GetControlElementFromID(elementList, elementID);</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>  <a class="code" href="class_node.html">Node</a>* node = element->GetNodeList()[nodeID];</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span> </div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>  <span class="keywordflow">if</span>(firstNode) cLine = <span class="keyword">new</span> <a class="code" href="class_connection_line.html">ConnectionLine</a>(node, <span class="keywordtype">id</span>);</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>  cLine-><a class="code" href="class_element.html#a569178e9138490a981511a644536c0f9">AddParent</a>(element);</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>  element-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(cLine);</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>  <span class="keywordflow">if</span>(!firstNode) cLine->AppendNode(node, element);</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span> </div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>  <span class="keywordflow">if</span>(firstNode) firstNode = <span class="keyword">false</span>;</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>  parentNode = parentNode->next_sibling(<span class="stringliteral">"Parent"</span>);</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>  }</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span> </div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>  <span class="keyword">auto</span> parentLine = connNode->first_node(<span class="stringliteral">"ParentLine"</span>);</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>  <span class="keywordflow">if</span>(!parentLine) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>  <span class="keywordtype">int</span> parentLineID = GetAttributeValueInt(parentLine, <span class="stringliteral">"ID"</span>);</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>  <span class="keywordflow">if</span>(parentLineID != -1) {</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = connectionList.begin(), itEnd = connectionList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* parent = *it;</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>() == parentLineID) {</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>  cLine->SetParentLine(parent);</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(cLine);</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>  }</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>  }</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>  }</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span> </div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>  cLine->SetOffset(offset);</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  cLine->UpdatePoints();</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>  connectionList.push_back(cLine);</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>  connNode = connNode->next_sibling(<span class="stringliteral">"Connection"</span>);</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>  }</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>  ctrlContainer->FillContainer(elementList, connectionList);</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span> }</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span> </div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span> <span class="keywordtype">void</span> FileHanding::SaveControlNodes(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>  rapidxml::xml_node<>* nodesN,</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>  std::vector<Node*> nodeList)</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span> {</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = 0;</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = nodeList.begin(), itEnd = nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>  node->SetID(<span class="keywordtype">id</span>);</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>  <span class="keyword">auto</span> nodeN = AppendNode(doc, nodesN, <span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>  SetNodeAttribute(doc, nodeN, <span class="stringliteral">"ID"</span>, <span class="keywordtype">id</span>);</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>  <span class="keyword">auto</span> nodePosition = AppendNode(doc, nodeN, <span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>  <span class="keyword">auto</span> posNodeX = AppendNode(doc, nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>  SetNodeValue(doc, posNodeX, node->GetPosition().m_x);</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>  <span class="keyword">auto</span> posNodeY = AppendNode(doc, nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>  SetNodeValue(doc, posNodeY, node->GetPosition().m_y);</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>  <span class="keyword">auto</span> angle = AppendNode(doc, nodeN, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>  SetNodeValue(doc, angle, node->GetAngle());</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>  <span class="keyword">auto</span> nodeType = AppendNode(doc, nodeN, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>  SetNodeValue(doc, nodeType, node->GetNodeType());</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>  <span class="keywordtype">id</span>++;</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>  }</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span> }</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span> </div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span> <a class="code" href="class_control_element.html">ControlElement</a>* FileHanding::GetControlElementFromID(std::vector<ControlElement*> elementList, <span class="keywordtype">int</span> <span class="keywordtype">id</span>)</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span> {</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>  <a class="code" href="class_control_element.html">ControlElement</a>* element = *it;</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>() == id) <span class="keywordflow">return</span> element;</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>  }</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>  <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span> }</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span> </div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span> <span class="keywordtype">bool</span> FileHanding::OpenControlNodeList(rapidxml::xml_node<>* elementNode, std::vector<Node*>& nodeVector)</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span> {</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>  <span class="keyword">auto</span> nodeList = elementNode->first_node(<span class="stringliteral">"NodeList"</span>);</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>  <span class="keywordflow">if</span>(!nodeList) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>  <span class="keyword">auto</span> nodeN = nodeList->first_node(<span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>  <span class="keywordflow">while</span>(nodeN) {</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>  <span class="keyword">auto</span> nodePosition = nodeN->first_node(<span class="stringliteral">"Position"</span>);</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  <span class="keywordtype">double</span> nodePosX = GetNodeValueDouble(nodePosition, <span class="stringliteral">"X"</span>);</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>  <span class="keywordtype">double</span> nodePosY = GetNodeValueDouble(nodePosition, <span class="stringliteral">"Y"</span>);</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>  <span class="keywordtype">double</span> nodeAngle = GetNodeValueDouble(nodeN, <span class="stringliteral">"Angle"</span>);</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>  Node::NodeType nodeType = (Node::NodeType)GetNodeValueInt(nodeN, <span class="stringliteral">"Type"</span>);</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>  <a class="code" href="class_node.html">Node</a>* node = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(wxPoint2DDouble(nodePosX, nodePosY), nodeType, 2.0);</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>  node->SetAngle(nodeAngle);</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>  nodeVector.push_back(node);</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>  nodeN = nodeN->next_sibling(<span class="stringliteral">"Node"</span>);</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>  }</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span> }</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span> </div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span> rapidxml::xml_node<>* FileHanding::AppendNode(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>  rapidxml::xml_node<>* parentNode,</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* name,</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>  rapidxml::node_type nodeType)</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span> {</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>  rapidxml::xml_node<>* node = doc.allocate_node(nodeType, name);</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>  parentNode->append_node(node);</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>  <span class="keywordflow">return</span> node;</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span> }</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span> </div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span> <span class="keywordtype">void</span> FileHanding::SetNodeValue(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, wxString value)</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span> {</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>  node->value(doc.allocate_string(value.mb_str()));</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span> }</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span> </div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span> <span class="keywordtype">void</span> FileHanding::SetNodeValue(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, <span class="keywordtype">int</span> value)</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span> {</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>  node->value(doc.allocate_string(wxString::Format(<span class="stringliteral">"%d"</span>, value).mb_str()));</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span> }</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span> </div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span> <span class="keywordtype">void</span> FileHanding::SetNodeValue(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, <span class="keywordtype">double</span> value)</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span> {</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>  node->value(doc.allocate_string(wxString::FromCDouble(value, 13).mb_str()));</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span> }</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span> </div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span> <span class="keywordtype">void</span> FileHanding::SetNodeAttribute(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>  rapidxml::xml_node<>* node,</div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName,</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>  wxString value)</div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span> {</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>  node->append_attribute(doc.allocate_attribute(atrName, doc.allocate_string(value.mb_str())));</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span> }</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span> </div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span> <span class="keywordtype">void</span> FileHanding::SetNodeAttribute(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>  rapidxml::xml_node<>* node,</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName,</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>  <span class="keywordtype">int</span> value)</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span> {</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>  node->append_attribute(</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>  doc.allocate_attribute(atrName, doc.allocate_string(wxString::Format(<span class="stringliteral">"%d"</span>, value).mb_str())));</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span> }</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span> </div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span> <span class="keywordtype">void</span> FileHanding::SetNodeAttribute(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>  rapidxml::xml_node<>* node,</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName,</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>  <span class="keywordtype">double</span> value)</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span> {</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>  node->append_attribute(</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>  doc.allocate_attribute(atrName, doc.allocate_string(wxString::FromCDouble(value, 13).mb_str())));</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span> }</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span> </div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span> <span class="keywordtype">double</span> FileHanding::GetNodeValueDouble(rapidxml::xml_node<>* parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* nodeName)</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span> {</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>  <span class="keywordtype">double</span> dValue = 0.0;</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>  <span class="keyword">auto</span> node = parent->first_node(nodeName);</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>  <span class="keywordflow">if</span>(node) wxString(node->value()).ToCDouble(&dValue);</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>  }</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>  <span class="keywordflow">return</span> dValue;</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span> }</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span> </div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span> <span class="keywordtype">int</span> FileHanding::GetNodeValueInt(rapidxml::xml_node<>* parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* nodeName)</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span> {</div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>  <span class="keywordtype">long</span> iValue = -1;</div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>  <span class="keyword">auto</span> node = parent->first_node(nodeName);</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>  <span class="keywordflow">if</span>(node) wxString(node->value()).ToCLong(&iValue);</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>  }</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>  <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)iValue;</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span> }</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span> </div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span> <span class="keywordtype">int</span> FileHanding::GetAttributeValueInt(rapidxml::xml_node<>* parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* nodeName, <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName)</div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span> {</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>  <span class="keywordtype">long</span> iValue = -1;</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>  <span class="keyword">auto</span> node = parent->first_node(nodeName);</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>  <span class="keywordflow">if</span>(node) {</div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>  <span class="keyword">auto</span> atr = node->first_attribute(atrName);</div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>  <span class="keywordflow">if</span>(atr) wxString(atr->value()).ToCLong(&iValue);</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>  }</div><div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>  }</div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>  <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)iValue;</div><div class="line"><a name="l02720"></a><span class="lineno"> 2720</span> }</div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span> </div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span> <span class="keywordtype">int</span> FileHanding::GetAttributeValueInt(rapidxml::xml_node<>* node, <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName)</div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span> {</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>  <span class="keywordtype">long</span> intValue;</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>  <span class="keyword">auto</span> atr = node->first_attribute(atrName);</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>  <span class="keywordflow">if</span>(!atr) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>  wxString(atr->value()).ToCLong(&intValue);</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>  <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)intValue;</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> -<div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00065">Text.h:65</a></div></div> +<div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdoc">Element that shows power element informations in workspace. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00072">Text.h:72</a></div></div> <div class="ttc" id="class_multiplier_html"><div class="ttname"><a href="class_multiplier.html">Multiplier</a></div><div class="ttdoc">Multiplies two inputs. </div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00032">Multiplier.h:32</a></div></div> <div class="ttc" id="struct_switching_data_html_a3323745bf0a3f6461fbc19bc76a189df"><div class="ttname"><a href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">SwitchingData::swTime</a></div><div class="ttdeci">std::vector< double > swTime</div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00095">PowerElement.h:95</a></div></div> <div class="ttc" id="class_machines_html_acbefe76cd5161b5684a27205b155e797"><div class="ttname"><a href="class_machines.html#acbefe76cd5161b5684a27205b155e797">Machines::StartMove</a></div><div class="ttdeci">virtual void StartMove(wxPoint2DDouble position)</div><div class="ttdoc">Update the element attributes related to the movement. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00146">Machines.cpp:146</a></div></div> <div class="ttc" id="struct_ind_motor_electrical_data_html"><div class="ttname"><a href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00025">IndMotor.h:25</a></div></div> <div class="ttc" id="struct_sync_generator_electrical_data_html"><div class="ttname"><a href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00025">SyncGenerator.h:25</a></div></div> <div class="ttc" id="class_branch_html_aa0328a743090b2b7b3f33d57a867b6dc"><div class="ttname"><a href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">Branch::RemoveParent</a></div><div class="ttdeci">virtual void RemoveParent(Element *parent)</div><div class="ttdoc">Remove a parent. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8cpp_source.html#l00105">Branch.cpp:105</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_electric_calculation_html_a3b89149e5fb56253c0629c9d260b3b7e"><div class="ttname"><a href="class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e">ElectricCalculation::GetTransformerList</a></div><div class="ttdeci">const std::vector< Transformer * > GetTransformerList() const</div><div class="ttdoc">Get the transformers of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00185">ElectricCalculation.h:185</a></div></div> <div class="ttc" id="class_text_html_afe1f86a497f34cee4809cbd7fda24dc3"><div class="ttname"><a href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Text::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00162">Text.cpp:162</a></div></div> -<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00026">Sum.h:26</a></div></div> +<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdoc">Sum the all inputs (can choose the input signal). </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00033">Sum.h:33</a></div></div> <div class="ttc" id="class_element_html_a7dce6c1b97facecf3e3b2f1555858b09"><div class="ttname"><a href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">Element::GetParentList</a></div><div class="ttdeci">virtual std::vector< Element * > GetParentList() const</div><div class="ttdoc">Get the parent list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00506">Element.h:506</a></div></div> <div class="ttc" id="class_element_html_a5da121470a0c26c6b5c57a7c4eeac48b"><div class="ttname"><a href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">Element::SetWidth</a></div><div class="ttdeci">void SetWidth(double width)</div><div class="ttdoc">Set element width. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00151">Element.h:151</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. . </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00036">Gain.h:36</a></div></div> +<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00035">Gain.h:35</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cb"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a></div><div class="ttdeci">FaultData</div><div class="ttdoc">Information about fault (type and location). </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00055">PowerElement.h:55</a></div></div> <div class="ttc" id="class_capacitor_html_a2c3f0949c2b791c6a0b69866e9aaff7a"><div class="ttname"><a href="class_capacitor.html#a2c3f0949c2b791c6a0b69866e9aaff7a">Capacitor::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8cpp_source.html#l00115">Capacitor.cpp:115</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> @@ -114,7 +114,7 @@ $(document).ready(function(){initNavTree('_file_handing_8cpp_source.html','');}) <div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdoc">Limits the input value by superior and inferior values. </div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00032">Limiter.h:32</a></div></div> <div class="ttc" id="class_inductor_html_a801bb445c01059558902c0eca4d38cdd"><div class="ttname"><a href="class_inductor.html#a801bb445c01059558902c0eca4d38cdd">Inductor::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8cpp_source.html#l00113">Inductor.cpp:113</a></div></div> <div class="ttc" id="struct_inductor_electrical_data_html"><div class="ttname"><a href="struct_inductor_electrical_data.html">InductorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00025">Inductor.h:25</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="class_control_element_html_a61440a392d438de163bfe9ffb8e9efec"><div class="ttname"><a href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">ControlElement::StartMove</a></div><div class="ttdeci">virtual void StartMove(wxPoint2DDouble position)</div><div class="ttdoc">Update the element attributes related to the movement. </div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8cpp_source.html#l00117">ControlElement.cpp:117</a></div></div> <div class="ttc" id="class_machines_html_a2f7450283dd36f4fc0847dfd50385c44"><div class="ttname"><a href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Machines::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00111">Machines.cpp:111</a></div></div> <div class="ttc" id="class_electric_calculation_html_aca3381e8f6663394e4d257a54e4e2a24"><div class="ttname"><a href="class_electric_calculation.html#aca3381e8f6663394e4d257a54e4e2a24">ElectricCalculation::GetBusList</a></div><div class="ttdeci">const std::vector< Bus * > GetBusList() const</div><div class="ttdoc">Get the buses of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00145">ElectricCalculation.h:145</a></div></div> @@ -127,12 +127,12 @@ $(document).ready(function(){initNavTree('_file_handing_8cpp_source.html','');}) <div class="ttc" id="class_transformer_html_a67f1e2686932700fe8a83fdc232ea1e8"><div class="ttname"><a href="class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8">Transformer::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00212">Transformer.cpp:212</a></div></div> <div class="ttc" id="class_electric_calculation_html_a8709a452d684d4224d32591c281ae0ed"><div class="ttname"><a href="class_electric_calculation.html#a8709a452d684d4224d32591c281ae0ed">ElectricCalculation::GetInductorList</a></div><div class="ttdeci">const std::vector< Inductor * > GetInductorList() const</div><div class="ttdoc">Get the inductors of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00160">ElectricCalculation.h:160</a></div></div> <div class="ttc" id="class_element_html_a569178e9138490a981511a644536c0f9"><div class="ttname"><a href="class_element.html#a569178e9138490a981511a644536c0f9">Element::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00240">Element.h:240</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="class_inductor_html_a4e404c6e15f206fe0f5de06fc19dedf5"><div class="ttname"><a href="class_inductor.html#a4e404c6e15f206fe0f5de06fc19dedf5">Inductor::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8cpp_source.html#l00024">Inductor.cpp:24</a></div></div> <div class="ttc" id="class_element_html_a57c84a8e6eb80f0fea6e23cdd439d5aa"><div class="ttname"><a href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">Element::IsOnline</a></div><div class="ttdeci">bool IsOnline() const</div><div class="ttdoc">Checks if the element is online or offline. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00227">Element.h:227</a></div></div> -<div class="ttc" id="struct_switching_data_html"><div class="ttname"><a href="struct_switching_data.html">SwitchingData</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00093">PowerElement.h:93</a></div></div> +<div class="ttc" id="struct_switching_data_html"><div class="ttname"><a href="struct_switching_data.html">SwitchingData</a></div><div class="ttdoc">Switching data of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00093">PowerElement.h:93</a></div></div> <div class="ttc" id="class_shunt_html_aa98b8a2f097fc02fee1ea874e19480f3"><div class="ttname"><a href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Shunt::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00032">Shunt.cpp:32</a></div></div> -<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. . </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00033">Exponential.h:33</a></div></div> +<div class="ttc" id="class_exponential_html"><div class="ttname"><a href="class_exponential.html">Exponential</a></div><div class="ttdoc">Generates an output following an exponential function. </div><div class="ttdef"><b>Definition:</b> <a href="_exponential_8h_source.html#l00032">Exponential.h:32</a></div></div> <div class="ttc" id="class_element_html_aa5d8558082ce38832af3b8c8ac1cf36f"><div class="ttname"><a href="class_element.html#aa5d8558082ce38832af3b8c8ac1cf36f">Element::SetAngle</a></div><div class="ttdeci">void SetAngle(double angle)</div><div class="ttdoc">Set element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00156">Element.h:156</a></div></div> <div class="ttc" id="class_element_html_a23e1fe2745c70cfb43725f608c4bce00"><div class="ttname"><a href="class_element.html#a23e1fe2745c70cfb43725f608c4bce00">Element::GetWidth</a></div><div class="ttdeci">double GetWidth() const</div><div class="ttdoc">Get the element width. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00207">Element.h:207</a></div></div> <div class="ttc" id="class_line_html_a26c69f7f703dca718edc28d5093934a3"><div class="ttname"><a href="class_line.html#a26c69f7f703dca718edc28d5093934a3">Line::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00136">Line.cpp:136</a></div></div> @@ -140,9 +140,9 @@ $(document).ready(function(){initNavTree('_file_handing_8cpp_source.html','');}) <div class="ttc" id="class_electric_calculation_html_a4ddabc6210146ae1ccae5f6911095bfd"><div class="ttname"><a href="class_electric_calculation.html#a4ddabc6210146ae1ccae5f6911095bfd">ElectricCalculation::GetCapacitorList</a></div><div class="ttdeci">const std::vector< Capacitor * > GetCapacitorList() const</div><div class="ttdoc">Get the capacitors of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00150">ElectricCalculation.h:150</a></div></div> <div class="ttc" id="class_machines_html_aaaf1b86dcbfd8f4a4c082a77d72b1fe3"><div class="ttname"><a href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">Machines::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00025">Machines.cpp:25</a></div></div> <div class="ttc" id="class_element_html_ac38d6707d08cb5c057032aa94b511a62"><div class="ttname"><a href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">Element::AddChild</a></div><div class="ttdeci">virtual void AddChild(Element *child)</div><div class="ttdoc">Add a child to the child list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00353">Element.cpp:353</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> <div class="ttc" id="_file_handing_8h_html"><div class="ttname"><a href="_file_handing_8h.html">FileHanding.h</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> <div class="ttc" id="class_element_html_a616c73ff20402109ede68579094acc3d"><div class="ttname"><a href="class_element.html#a616c73ff20402109ede68579094acc3d">Element::GetHeight</a></div><div class="ttdeci">double GetHeight() const</div><div class="ttdoc">Get the element height. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00197">Element.h:197</a></div></div> <div class="ttc" id="class_element_html_aff2870f5979a84a30c27917cb33271f9"><div class="ttname"><a href="class_element.html#aff2870f5979a84a30c27917cb33271f9">Element::GetPointList</a></div><div class="ttdeci">virtual std::vector< wxPoint2DDouble > GetPointList() const</div><div class="ttdoc">Get the list of points that connect the element to bus. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00232">Element.h:232</a></div></div> <div class="ttc" id="class_rate_limiter_html"><div class="ttname"><a href="class_rate_limiter.html">RateLimiter</a></div><div class="ttdoc">Limits the rising and/or falling rate. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00032">RateLimiter.h:32</a></div></div> @@ -150,7 +150,7 @@ $(document).ready(function(){initNavTree('_file_handing_8cpp_source.html','');}) <div class="ttc" id="struct_line_electrical_data_html"><div class="ttname"><a href="struct_line_electrical_data.html">LineElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00024">Line.h:24</a></div></div> <div class="ttc" id="class_electric_calculation_html_aa5e278a1c5ba1b6159c21ae2ff2b23b4"><div class="ttname"><a href="class_electric_calculation.html#aa5e278a1c5ba1b6159c21ae2ff2b23b4">ElectricCalculation::GetLoadList</a></div><div class="ttdeci">const std::vector< Load * > GetLoadList() const</div><div class="ttdoc">Get the loads of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00170">ElectricCalculation.h:170</a></div></div> <div class="ttc" id="struct_load_electrical_data_html"><div class="ttname"><a href="struct_load_electrical_data.html">LoadElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00026">Load.h:26</a></div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> <div class="ttc" id="class_machines_html_acff264f0c80d97a966ff97401f2f142a"><div class="ttname"><a href="class_machines.html#acff264f0c80d97a966ff97401f2f142a">Machines::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00232">Machines.cpp:232</a></div></div> <div class="ttc" id="class_line_html_af9a931bdb7e0693cacae010a19b744e6"><div class="ttname"><a href="class_line.html#af9a931bdb7e0693cacae010a19b744e6">Line::SetPointList</a></div><div class="ttdeci">virtual void SetPointList(std::vector< wxPoint2DDouble > pointList)</div><div class="ttdoc">Set the list of points that connect the element to the bus. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00492">Line.cpp:492</a></div></div> <div class="ttc" id="class_bus_html_ace039d00c23d36a7c14d7e4155c94791"><div class="ttname"><a href="class_bus.html#ace039d00c23d36a7c14d7e4155c94791">Bus::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8cpp_source.html#l00184">Bus.cpp:184</a></div></div> @@ -158,21 +158,21 @@ $(document).ready(function(){initNavTree('_file_handing_8cpp_source.html','');}) <div class="ttc" id="class_connection_line_html"><div class="ttname"><a href="class_connection_line.html">ConnectionLine</a></div><div class="ttdoc">Connection between two control elements or other connection line and an element. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00030">ConnectionLine.h:30</a></div></div> <div class="ttc" id="class_shunt_html_a56d6136d647f64cf490dd9d7720f6865"><div class="ttname"><a href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">Shunt::StartMove</a></div><div class="ttdeci">virtual void StartMove(wxPoint2DDouble position)</div><div class="ttdoc">Update the element attributes related to the movement. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00067">Shunt.cpp:67</a></div></div> <div class="ttc" id="_power_element_8h_html_ae98a0d9ac1aab1d3a057854f5ebdca1b"><div class="ttname"><a href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b">SwitchingType</a></div><div class="ttdeci">SwitchingType</div><div class="ttdoc">Type of switching. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00069">PowerElement.h:69</a></div></div> -<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00028">TransferFunction.h:28</a></div></div> -<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00033">IndMotor.h:33</a></div></div> +<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdoc">Calculates the time response by a frequency domain transfer function. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00035">TransferFunction.h:35</a></div></div> +<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdoc">Induction motor power element. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00040">IndMotor.h:40</a></div></div> <div class="ttc" id="class_control_editor_html"><div class="ttname"><a href="class_control_editor.html">ControlEditor</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_editor_8h_source.html#l00091">ControlEditor.h:91</a></div></div> <div class="ttc" id="class_transformer_html_aea52a4562ec5b4a79bf82b8ede32ecc6"><div class="ttname"><a href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6">Transformer::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00039">Transformer.cpp:39</a></div></div> <div class="ttc" id="class_electric_calculation_html_ae9b5e9b51615141e88de0a0f99a7741e"><div class="ttname"><a href="class_electric_calculation.html#ae9b5e9b51615141e88de0a0f99a7741e">ElectricCalculation::GetSyncMotorList</a></div><div class="ttdeci">const std::vector< SyncMotor * > GetSyncMotorList() const</div><div class="ttdoc">Get the synchronous motors of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00180">ElectricCalculation.h:180</a></div></div> <div class="ttc" id="class_element_html_a20693eda52fae0b42d6fa6a70fd0a0ee"><div class="ttname"><a href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">Element::GetID</a></div><div class="ttdeci">virtual int GetID() const</div><div class="ttdoc">Get the element ID. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00272">Element.h:272</a></div></div> -<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00031">Capacitor.h:31</a></div></div> +<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdoc">Shunt capactior power element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00038">Capacitor.h:38</a></div></div> <div class="ttc" id="class_transformer_html_a0395a11dc8173e511a0596ac96bf05e5"><div class="ttname"><a href="class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5">Transformer::StartMove</a></div><div class="ttdeci">virtual void StartMove(wxPoint2DDouble position)</div><div class="ttdoc">Update the element attributes related to the movement. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00266">Transformer.cpp:266</a></div></div> <div class="ttc" id="class_load_html_ac9f449be9b919b36924a844324bf37ee"><div class="ttname"><a href="class_load.html#ac9f449be9b919b36924a844324bf37ee">Load::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_load_8cpp_source.html#l00023">Load.cpp:23</a></div></div> <div class="ttc" id="class_machines_html_a002d852ddd0d73502a6bd819b5545026"><div class="ttname"><a href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">Machines::RemoveParent</a></div><div class="ttdeci">virtual void RemoveParent(Element *parent)</div><div class="ttdoc">Remove a parent. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00165">Machines.cpp:165</a></div></div> <div class="ttc" id="class_element_html_a536ad18a847dcc979c984b3cb287f238"><div class="ttname"><a href="class_element.html#a536ad18a847dcc979c984b3cb287f238">Element::GetPosition</a></div><div class="ttdeci">wxPoint2DDouble GetPosition() const</div><div class="ttdoc">Get the element position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00187">Element.h:187</a></div></div> -<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00031">Inductor.h:31</a></div></div> +<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdoc">Inductor shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00038">Inductor.h:38</a></div></div> <div class="ttc" id="class_electric_calculation_html_aff1a62936d87e61764b13f3b0212cf92"><div class="ttname"><a href="class_electric_calculation.html#aff1a62936d87e61764b13f3b0212cf92">ElectricCalculation::GetElementsFromList</a></div><div class="ttdeci">virtual void GetElementsFromList(std::vector< Element *> elementList)</div><div class="ttdoc">Separate the power elements from a generic list. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8cpp_source.html#l00025">ElectricCalculation.cpp:25</a></div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> -<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> +<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> <div class="ttc" id="struct_transformer_electrical_data_html"><div class="ttname"><a href="struct_transformer_electrical_data.html">TransformerElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00037">Transformer.h:37</a></div></div> <div class="ttc" id="class_constant_html"><div class="ttname"><a href="class_constant.html">Constant</a></div><div class="ttdoc">A control element that provides a constant value. </div><div class="ttdef"><b>Definition:</b> <a href="_constant_8h_source.html#l00035">Constant.h:35</a></div></div> <div class="ttc" id="class_workspace_html"><div class="ttname"><a href="class_workspace.html">Workspace</a></div><div class="ttdoc">This class manages the graphical and power elements. It is responsible for handling the user&#39;s intera...</div><div class="ttdef"><b>Definition:</b> <a href="_workspace_8h_source.html#l00081">Workspace.h:81</a></div></div> @@ -180,7 +180,7 @@ $(document).ready(function(){initNavTree('_file_handing_8cpp_source.html','');}) <div class="ttc" id="class_element_html_a3687fe2558f6a27ee068fa7244f855eb"><div class="ttname"><a href="class_element.html#a3687fe2558f6a27ee068fa7244f855eb">Element::GetRotationAngle</a></div><div class="ttdeci">double GetRotationAngle() const</div><div class="ttdoc">Get the angle of rotation. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00217">Element.h:217</a></div></div> <div class="ttc" id="class_electric_calculation_html_af8eff271de83898c536deda1aab22d48"><div class="ttname"><a href="class_electric_calculation.html#af8eff271de83898c536deda1aab22d48">ElectricCalculation::GetLineList</a></div><div class="ttdeci">const std::vector< Line * > GetLineList() const</div><div class="ttdoc">Get the lines of the system (use GetElementsFromList first). </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00165">ElectricCalculation.h:165</a></div></div> <div class="ttc" id="class_capacitor_html_ace755e5bc3cc72b491ce31c24c54a5cf"><div class="ttname"><a href="class_capacitor.html#ace755e5bc3cc72b491ce31c24c54a5cf">Capacitor::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8cpp_source.html#l00024">Capacitor.cpp:24</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> <div class="ttc" id="class_element_html_a88171a7f1d0d9273f6fd43a4945341ec"><div class="ttname"><a href="class_element.html#a88171a7f1d0d9273f6fd43a4945341ec">Element::SetHeight</a></div><div class="ttdeci">void SetHeight(double height)</div><div class="ttdoc">Set element height. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00135">Element.h:135</a></div></div> <div class="ttc" id="struct_capacitor_electrical_data_html"><div class="ttname"><a href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00025">Capacitor.h:25</a></div></div> <div class="ttc" id="struct_sync_motor_electrical_data_html"><div class="ttname"><a href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00025">SyncMotor.h:25</a></div></div> diff --git a/docs/doxygen/html/_file_handing_8h.html b/docs/doxygen/html/_file_handing_8h.html index 12d632c..8b51868 100644 --- a/docs/doxygen/html/_file_handing_8h.html +++ b/docs/doxygen/html/_file_handing_8h.html @@ -97,7 +97,7 @@ $(document).ready(function(){initNavTree('_file_handing_8h.html','');}); <code>#include "<a class="el" href="_control_editor_8h_source.html">ControlEditor.h</a>"</code><br /> <code>#include "<a class="el" href="_control_element_container_8h_source.html">ControlElementContainer.h</a>"</code><br /> <code>#include "<a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>"</code><br /> -<code>#include "Text.h"</code><br /> +<code>#include "<a class="el" href="_text_8h_source.html">Text.h</a>"</code><br /> <code>#include "rapidXML/rapidxml.hpp"</code><br /> <code>#include "rapidXML/rapidxml_print.hpp"</code><br /> <code>#include "rapidXML/rapidxml_utils.hpp"</code><br /> diff --git a/docs/doxygen/html/_file_handing_8h_source.html b/docs/doxygen/html/_file_handing_8h_source.html index 4f8f3ab..08ec41e 100644 --- a/docs/doxygen/html/_file_handing_8h_source.html +++ b/docs/doxygen/html/_file_handing_8h_source.html @@ -88,11 +88,12 @@ $(document).ready(function(){initNavTree('_file_handing_8h_source.html','');}); <div class="title">FileHanding.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_file_handing_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef FILEHANDING_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define FILEHANDING_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <wx/string.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <fstream></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="_workspace_8h.html">Workspace.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="_control_editor_8h.html">ControlEditor.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="_control_element_container_8h.html">ControlElementContainer.h</a>"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Text.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "rapidXML/rapidxml.hpp"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// Modified: http://stackoverflow.com/questions/14113923/rapidxml-print-header-has-undefined-methods</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "rapidXML/rapidxml_print.hpp"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "rapidXML/rapidxml_utils.hpp"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_file_handing.html"> 43</a></span> <span class="keyword">class </span><a class="code" href="class_file_handing.html">FileHanding</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_file_handing.html">FileHanding</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_file_handing.html">FileHanding</a>(<a class="code" href="class_workspace.html">Workspace</a>* workspace);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_file_handing.html">FileHanding</a>(<a class="code" href="class_control_editor.html">ControlEditor</a>* controlEditor);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~<a class="code" href="class_file_handing.html">FileHanding</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> SetWorkspace(<a class="code" href="class_workspace.html">Workspace</a>* workspace) { m_workspace = workspace; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">void</span> SetControlEditor(<a class="code" href="class_control_editor.html">ControlEditor</a>* controlEditor) { m_controlEditor = controlEditor; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">void</span> SaveProject(wxFileName path);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">bool</span> OpenProject(wxFileName path);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> SaveControl(wxFileName path);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">bool</span> OpenControl(wxFileName path, std::vector<ControlElement*>& ctrlElementList, std::vector<ConnectionLine*>& ctrlConnectionList);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">void</span> SaveControlElements(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementsNode, <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlContainer = NULL);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">bool</span> OpenControlElements(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementsNode, <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlContainer = NULL);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_workspace.html">Workspace</a>* m_workspace = NULL;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_control_editor.html">ControlEditor</a>* m_controlEditor = NULL;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  rapidxml::xml_node<>* AppendNode(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  rapidxml::xml_node<>* parentNode,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* name,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  rapidxml::node_type nodeType = rapidxml::node_element);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">void</span> SetNodeValue(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, wxString value);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">void</span> SetNodeValue(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, <span class="keywordtype">int</span> value);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">void</span> SetNodeValue(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, <span class="keywordtype">double</span> value);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">void</span> SetNodeAttribute(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName, wxString value);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">void</span> SetNodeAttribute(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName, <span class="keywordtype">int</span> value);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">void</span> SetNodeAttribute(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName, <span class="keywordtype">double</span> value);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">double</span> GetNodeValueDouble(rapidxml::xml_node<>* parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* nodeName);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">int</span> GetNodeValueInt(rapidxml::xml_node<>* parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* nodeName);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">int</span> GetAttributeValueInt(rapidxml::xml_node<>* parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* nodeName, <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">int</span> GetAttributeValueInt(rapidxml::xml_node<>* node, <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">void</span> SaveControlNodes(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* nodesN, std::vector<Node*> nodeList);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="class_control_element.html">ControlElement</a>* GetControlElementFromID(std::vector<ControlElement*> elementList, <span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">bool</span> OpenControlNodeList(rapidxml::xml_node<>* elementNode, std::vector<Node*>& nodeVector);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> };</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#endif // FILEHANDING_H</span></div><div class="ttc" id="_workspace_8h_html"><div class="ttname"><a href="_workspace_8h.html">Workspace.h</a></div></div> +<a href="_file_handing_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * (at your option) any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef FILEHANDING_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define FILEHANDING_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <wx/string.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <fstream></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="_workspace_8h.html">Workspace.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="_control_editor_8h.html">ControlEditor.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="_control_element_container_8h.html">ControlElementContainer.h</a>"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="_text_8h.html">Text.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "rapidXML/rapidxml.hpp"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// Modified: http://stackoverflow.com/questions/14113923/rapidxml-print-header-has-undefined-methods</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "rapidXML/rapidxml_print.hpp"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "rapidXML/rapidxml_utils.hpp"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_file_handing.html"> 43</a></span> <span class="keyword">class </span><a class="code" href="class_file_handing.html">FileHanding</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_file_handing.html">FileHanding</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_file_handing.html">FileHanding</a>(<a class="code" href="class_workspace.html">Workspace</a>* workspace);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_file_handing.html">FileHanding</a>(<a class="code" href="class_control_editor.html">ControlEditor</a>* controlEditor);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  ~<a class="code" href="class_file_handing.html">FileHanding</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> SetWorkspace(<a class="code" href="class_workspace.html">Workspace</a>* workspace) { m_workspace = workspace; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">void</span> SetControlEditor(<a class="code" href="class_control_editor.html">ControlEditor</a>* controlEditor) { m_controlEditor = controlEditor; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">void</span> SaveProject(wxFileName path);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">bool</span> OpenProject(wxFileName path);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">void</span> SaveControl(wxFileName path);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">bool</span> OpenControl(wxFileName path, std::vector<ControlElement*>& ctrlElementList, std::vector<ConnectionLine*>& ctrlConnectionList);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">void</span> SaveControlElements(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementsNode, <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlContainer = NULL);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">bool</span> OpenControlElements(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementsNode, <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* ctrlContainer = NULL);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">protected</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_workspace.html">Workspace</a>* m_workspace = NULL;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_control_editor.html">ControlEditor</a>* m_controlEditor = NULL;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  rapidxml::xml_node<>* AppendNode(rapidxml::xml_document<>& doc,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  rapidxml::xml_node<>* parentNode,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* name,</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  rapidxml::node_type nodeType = rapidxml::node_element);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">void</span> SetNodeValue(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, wxString value);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">void</span> SetNodeValue(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, <span class="keywordtype">int</span> value);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">void</span> SetNodeValue(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, <span class="keywordtype">double</span> value);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">void</span> SetNodeAttribute(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName, wxString value);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">void</span> SetNodeAttribute(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName, <span class="keywordtype">int</span> value);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">void</span> SetNodeAttribute(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* node, <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName, <span class="keywordtype">double</span> value);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">double</span> GetNodeValueDouble(rapidxml::xml_node<>* parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* nodeName);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">int</span> GetNodeValueInt(rapidxml::xml_node<>* parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* nodeName);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">int</span> GetAttributeValueInt(rapidxml::xml_node<>* parent, <span class="keyword">const</span> <span class="keywordtype">char</span>* nodeName, <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">int</span> GetAttributeValueInt(rapidxml::xml_node<>* node, <span class="keyword">const</span> <span class="keywordtype">char</span>* atrName);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">void</span> SaveControlNodes(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* nodesN, std::vector<Node*> nodeList);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="class_control_element.html">ControlElement</a>* GetControlElementFromID(std::vector<ControlElement*> elementList, <span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">bool</span> OpenControlNodeList(rapidxml::xml_node<>* elementNode, std::vector<Node*>& nodeVector);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> };</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor">#endif // FILEHANDING_H</span></div><div class="ttc" id="_workspace_8h_html"><div class="ttname"><a href="_workspace_8h.html">Workspace.h</a></div></div> <div class="ttc" id="class_file_handing_html"><div class="ttname"><a href="class_file_handing.html">FileHanding</a></div><div class="ttdoc">Save and opens the projects created on disk. </div><div class="ttdef"><b>Definition:</b> <a href="_file_handing_8h_source.html#l00043">FileHanding.h:43</a></div></div> -<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div></div> +<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div></div> <div class="ttc" id="_control_editor_8h_html"><div class="ttname"><a href="_control_editor_8h.html">ControlEditor.h</a></div></div> <div class="ttc" id="class_control_element_container_html"><div class="ttname"><a href="class_control_element_container.html">ControlElementContainer</a></div><div class="ttdoc">Class that can contain all control elements. Can identify (using RTTI) the elements from a generic li...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00045">ControlElementContainer.h:45</a></div></div> +<div class="ttc" id="_text_8h_html"><div class="ttname"><a href="_text_8h.html">Text.h</a></div></div> <div class="ttc" id="_control_element_container_8h_html"><div class="ttname"><a href="_control_element_container_8h.html">ControlElementContainer.h</a></div></div> <div class="ttc" id="class_control_editor_html"><div class="ttname"><a href="class_control_editor.html">ControlEditor</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_editor_8h_source.html#l00091">ControlEditor.h:91</a></div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> diff --git a/docs/doxygen/html/_gain_8cpp_source.html b/docs/doxygen/html/_gain_8cpp_source.html index 853f21f..e1bc08a 100644 --- a/docs/doxygen/html/_gain_8cpp_source.html +++ b/docs/doxygen/html/_gain_8cpp_source.html @@ -88,16 +88,17 @@ $(document).ready(function(){initNavTree('_gain_8cpp_source.html','');}); <div class="title">Gain.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_gain_8h.html">Gain.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_gain_form_8h.html">GainForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Gain::Gain(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_triPts.resize(3);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  SetValue(m_value);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="class_node.html">Node</a>* nodeIn = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-m_width / 2, 0), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  nodeIn->StartMove(m_position);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="class_node.html">Node</a>* nodeOut = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(m_width / 2, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_nodeList.push_back(nodeIn);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> Gain::~Gain() {}</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_gain.html#a42f48bfdfb3d6f593fcc599504dd2264"> 35</a></span> <span class="keywordtype">void</span> <a class="code" href="class_gain.html#a42f48bfdfb3d6f593fcc599504dd2264">Gain::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword"></span>{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  std::vector<wxPoint2DDouble> m_triSelectedPts;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_triSelectedPts.push_back(m_triPts[0] - wxPoint2DDouble(borderSize / 2, borderSize / 1.5));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_triSelectedPts.push_back(m_triPts[1] - wxPoint2DDouble(borderSize / 2, -borderSize / 1.5));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_triSelectedPts.push_back(m_triPts[2] - wxPoint2DDouble(-borderSize, 0));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_triSelectedPts.push_back(m_triPts[0] - wxPoint2DDouble(borderSize / 1.5, borderSize / 2));</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_triSelectedPts.push_back(m_triPts[1] - wxPoint2DDouble(-borderSize / 1.5, borderSize / 2));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_triSelectedPts.push_back(m_triPts[2] - wxPoint2DDouble(0, -borderSize));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_triSelectedPts.push_back(m_triPts[0] - wxPoint2DDouble(borderSize, 0));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_triSelectedPts.push_back(m_triPts[1] - wxPoint2DDouble(-borderSize / 2, borderSize / 1.5));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_triSelectedPts.push_back(m_triPts[2] - wxPoint2DDouble(-borderSize / 2, -borderSize / 1.5));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_triSelectedPts.push_back(m_triPts[0] - wxPoint2DDouble(0, borderSize));</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_triSelectedPts.push_back(m_triPts[1] - wxPoint2DDouble(-borderSize / 1.5, -borderSize / 2));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_triSelectedPts.push_back(m_triPts[2] - wxPoint2DDouble(borderSize / 1.5, -borderSize / 2));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  DrawTriangle(m_triSelectedPts);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  glLineWidth(1.0);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  DrawTriangle(m_triPts);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  DrawTriangle(m_triPts, GL_LINE_LOOP);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Plot number.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_glStringValue->bind();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(m_angle == 0.0)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_glStringValue->render(m_position.m_x - m_width / 2 + m_glStringValue->getWidth() / 2 + 2 + m_borderSize,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_position.m_y);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_glStringValue->render(m_position.m_x,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_position.m_y - m_height / 2 + m_glStringValue->getheight() / 2 + 2 + m_borderSize);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_glStringValue->render(m_position.m_x + m_width / 2 - m_glStringValue->getWidth() / 2 - 2 - m_borderSize,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_position.m_y);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_glStringValue->render(m_position.m_x,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_position.m_y + m_height / 2 - m_glStringValue->getheight() / 2 - 2 - m_borderSize);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  DrawNodes();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="class_gain.html#a6b98027cbf545302867ad75f7ab84b93"> 88</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_gain.html#a6b98027cbf545302867ad75f7ab84b93">Gain::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="class_gain_form.html">GainForm</a>* form = <span class="keyword">new</span> <a class="code" href="class_gain_form.html">GainForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  form->Destroy();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  form->Destroy();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="class_gain.html#ae19d739112c3aad30c58bdfd98f442e7"> 99</a></span> <span class="keywordtype">void</span> <a class="code" href="class_gain.html#ae19d739112c3aad30c58bdfd98f442e7">Gain::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_angle += 90.0;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_angle -= 90.0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_angle = 0.0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  m_angle = 270.0;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  UpdatePoints();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="keywordtype">void</span> Gain::SetValue(<span class="keywordtype">double</span> value)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_value = value;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  wxString text = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span>(std::abs(m_value) > 1e3 || std::abs(m_value) < 1e-3)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  text = wxString::Format(<span class="stringliteral">"%g"</span>, m_value);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  text = StringFromDouble(m_value);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  wxScreenDC dc;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>(m_glStringValue) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">delete</span> m_glStringValue;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_glStringValue = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(text);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_glStringValue->setFont(font);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_glStringValue->consolidate(&dc);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  m_width = m_glStringValue->getWidth() + 18 + 2 * m_borderSize;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_height = m_glStringValue->getheight() + 18 + 2 * m_borderSize;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span>(m_width > m_height)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_height = m_width;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_width = m_height;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  SetPosition(m_position); <span class="comment">// Update rectangle.</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  UpdatePoints();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keywordtype">void</span> Gain::UpdatePoints()</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span>(m_nodeList.size() != 0) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  m_triPts[0] = m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_triPts[1] = m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_triPts[2] = m_position + wxPoint2DDouble(m_width / 2 - m_borderSize, 0);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(m_width / 2 - 2, 0));</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_triPts[0] = m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_triPts[1] = m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  m_triPts[2] = m_position + wxPoint2DDouble(0, m_height / 2 - m_borderSize);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2 - 2));</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_triPts[0] = m_position + wxPoint2DDouble(-m_width / 2 + m_borderSize, 0);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_triPts[1] = m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_triPts[2] = m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2 + 2, 0));</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_triPts[0] = m_position + wxPoint2DDouble(0, -m_height / 2 + m_borderSize);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_triPts[1] = m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  m_triPts[2] = m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2 + 2));</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db"> 182</a></span> <span class="keywordtype">void</span> <a class="code" href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db">Gain::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  UpdatePoints();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keywordtype">bool</span> Gain::Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  m_output = input * m_value;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="class_gain.html#a489572e289935d7256c037af682b9351"> 194</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_gain.html#a489572e289935d7256c037af682b9351">Gain::GetCopy</a>()</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="class_gain.html">Gain</a>* copy = <span class="keyword">new</span> <a class="code" href="class_gain.html">Gain</a>(m_elementID);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  SetValue(m_value);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="ttc" id="class_gain_html_aa303bcc736ac5fad1f89c6cc87e859db"><div class="ttname"><a href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db">Gain::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00182">Gain.cpp:182</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_gain_8h.html">Gain.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_gain_form_8h.html">GainForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Gain::Gain(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_triPts.resize(3);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  SetValue(m_value);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="class_node.html">Node</a>* nodeIn = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-m_width / 2, 0), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  nodeIn->StartMove(m_position);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="class_node.html">Node</a>* nodeOut = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(m_width / 2, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_nodeList.push_back(nodeIn);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> Gain::~Gain() {}</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_gain.html#a42f48bfdfb3d6f593fcc599504dd2264"> 35</a></span> <span class="keywordtype">void</span> <a class="code" href="class_gain.html#a42f48bfdfb3d6f593fcc599504dd2264">Gain::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword"></span>{</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  std::vector<wxPoint2DDouble> m_triSelectedPts;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_triSelectedPts.push_back(m_triPts[0] - wxPoint2DDouble(borderSize / 2, borderSize / 1.5));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_triSelectedPts.push_back(m_triPts[1] - wxPoint2DDouble(borderSize / 2, -borderSize / 1.5));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_triSelectedPts.push_back(m_triPts[2] - wxPoint2DDouble(-borderSize, 0));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_triSelectedPts.push_back(m_triPts[0] - wxPoint2DDouble(borderSize / 1.5, borderSize / 2));</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_triSelectedPts.push_back(m_triPts[1] - wxPoint2DDouble(-borderSize / 1.5, borderSize / 2));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_triSelectedPts.push_back(m_triPts[2] - wxPoint2DDouble(0, -borderSize));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_triSelectedPts.push_back(m_triPts[0] - wxPoint2DDouble(borderSize, 0));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_triSelectedPts.push_back(m_triPts[1] - wxPoint2DDouble(-borderSize / 2, borderSize / 1.5));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_triSelectedPts.push_back(m_triPts[2] - wxPoint2DDouble(-borderSize / 2, -borderSize / 1.5));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  m_triSelectedPts.push_back(m_triPts[0] - wxPoint2DDouble(0, borderSize));</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_triSelectedPts.push_back(m_triPts[1] - wxPoint2DDouble(-borderSize / 1.5, -borderSize / 2));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_triSelectedPts.push_back(m_triPts[2] - wxPoint2DDouble(borderSize / 1.5, -borderSize / 2));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  DrawTriangle(m_triSelectedPts);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  glLineWidth(1.0);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  DrawTriangle(m_triPts);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  DrawTriangle(m_triPts, GL_LINE_LOOP);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Plot number.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_glStringValue->bind();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(m_angle == 0.0)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_glStringValue->render(m_position.m_x - m_width / 2 + m_glStringValue->getWidth() / 2 + 2 + m_borderSize,</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_position.m_y);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_glStringValue->render(m_position.m_x,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_position.m_y - m_height / 2 + m_glStringValue->getheight() / 2 + 2 + m_borderSize);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_glStringValue->render(m_position.m_x + m_width / 2 - m_glStringValue->getWidth() / 2 - 2 - m_borderSize,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_position.m_y);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_glStringValue->render(m_position.m_x,</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_position.m_y + m_height / 2 - m_glStringValue->getheight() / 2 - 2 - m_borderSize);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  DrawNodes();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="class_gain.html#a6b98027cbf545302867ad75f7ab84b93"> 88</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_gain.html#a6b98027cbf545302867ad75f7ab84b93">Gain::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="class_gain_form.html">GainForm</a>* form = <span class="keyword">new</span> <a class="code" href="class_gain_form.html">GainForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  form->Destroy();</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  form->Destroy();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="class_gain.html#ae19d739112c3aad30c58bdfd98f442e7"> 99</a></span> <span class="keywordtype">void</span> <a class="code" href="class_gain.html#ae19d739112c3aad30c58bdfd98f442e7">Gain::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_angle += 90.0;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_angle -= 90.0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_angle = 0.0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  m_angle = 270.0;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  UpdatePoints();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="keywordtype">void</span> Gain::SetValue(<span class="keywordtype">double</span> value)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_value = value;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  wxString text = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span>(std::abs(m_value) > 1e3 || std::abs(m_value) < 1e-3)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  text = wxString::Format(<span class="stringliteral">"%g"</span>, m_value);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  text = StringFromDouble(m_value);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  wxScreenDC dc;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>(m_glStringValue) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">delete</span> m_glStringValue;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_glStringValue = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(text);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_glStringValue->setFont(font);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_glStringValue->consolidate(&dc);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  m_width = m_glStringValue->getWidth() + 18 + 2 * m_borderSize;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_height = m_glStringValue->getheight() + 18 + 2 * m_borderSize;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">if</span>(m_width > m_height)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_height = m_width;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_width = m_height;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  SetPosition(m_position); <span class="comment">// Update rectangle.</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  UpdatePoints();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="keywordtype">void</span> Gain::UpdatePoints()</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span>(m_nodeList.size() != 0) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  m_triPts[0] = m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_triPts[1] = m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_triPts[2] = m_position + wxPoint2DDouble(m_width / 2 - m_borderSize, 0);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(m_width / 2 - 2, 0));</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_triPts[0] = m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_triPts[1] = m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  m_triPts[2] = m_position + wxPoint2DDouble(0, m_height / 2 - m_borderSize);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2 - 2));</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_triPts[0] = m_position + wxPoint2DDouble(-m_width / 2 + m_borderSize, 0);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_triPts[1] = m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_triPts[2] = m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2 + 2, 0));</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_triPts[0] = m_position + wxPoint2DDouble(0, -m_height / 2 + m_borderSize);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_triPts[1] = m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  m_triPts[2] = m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2 + 2));</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db"> 182</a></span> <span class="keywordtype">void</span> <a class="code" href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db">Gain::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  UpdatePoints();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="class_gain.html#a282cab6d339aa89a35c775bbea2aa117"> 188</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_gain.html#a282cab6d339aa89a35c775bbea2aa117">Gain::Solve</a>(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  m_output = input * m_value;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="class_gain.html#a489572e289935d7256c037af682b9351"> 194</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_gain.html#a489572e289935d7256c037af682b9351">Gain::GetCopy</a>()</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="class_gain.html">Gain</a>* copy = <span class="keyword">new</span> <a class="code" href="class_gain.html">Gain</a>(m_elementID);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  SetValue(m_value);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="ttc" id="class_gain_html_aa303bcc736ac5fad1f89c6cc87e859db"><div class="ttname"><a href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db">Gain::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00182">Gain.cpp:182</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_gain_form_8h_html"><div class="ttname"><a href="_gain_form_8h.html">GainForm.h</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. . </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00036">Gain.h:36</a></div></div> +<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00035">Gain.h:35</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> <div class="ttc" id="class_gain_html_a489572e289935d7256c037af682b9351"><div class="ttname"><a href="class_gain.html#a489572e289935d7256c037af682b9351">Gain::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00194">Gain.cpp:194</a></div></div> <div class="ttc" id="class_gain_html_a6b98027cbf545302867ad75f7ab84b93"><div class="ttname"><a href="class_gain.html#a6b98027cbf545302867ad75f7ab84b93">Gain::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00088">Gain.cpp:88</a></div></div> <div class="ttc" id="_gain_8h_html"><div class="ttname"><a href="_gain_8h.html">Gain.h</a></div></div> <div class="ttc" id="class_gain_html_ae19d739112c3aad30c58bdfd98f442e7"><div class="ttname"><a href="class_gain.html#ae19d739112c3aad30c58bdfd98f442e7">Gain::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00099">Gain.cpp:99</a></div></div> <div class="ttc" id="class_gain_form_html"><div class="ttname"><a href="class_gain_form.html">GainForm</a></div><div class="ttdoc">Form to edit the gain control data. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_form_8h_source.html#l00031">GainForm.h:31</a></div></div> +<div class="ttc" id="class_gain_html_a282cab6d339aa89a35c775bbea2aa117"><div class="ttname"><a href="class_gain.html#a282cab6d339aa89a35c775bbea2aa117">Gain::Solve</a></div><div class="ttdeci">virtual bool Solve(double input, double timeStep)</div><div class="ttdoc">Multiply the input by a constant. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00188">Gain.cpp:188</a></div></div> <div class="ttc" id="class_gain_html_a42f48bfdfb3d6f593fcc599504dd2264"><div class="ttname"><a href="class_gain.html#a42f48bfdfb3d6f593fcc599504dd2264">Gain::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00035">Gain.cpp:35</a></div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> <div class="ttc" id="classwx_g_l_string_html"><div class="ttname"><a href="classwx_g_l_string.html">wxGLString</a></div><div class="ttdef"><b>Definition:</b> <a href="wx_g_l_string_8h_source.html#l00077">wxGLString.h:77</a></div></div> diff --git a/docs/doxygen/html/_gain_8h.html b/docs/doxygen/html/_gain_8h.html index 0f255cc..f732cac 100644 --- a/docs/doxygen/html/_gain_8h.html +++ b/docs/doxygen/html/_gain_8h.html @@ -99,7 +99,7 @@ $(document).ready(function(){initNavTree('_gain_8h.html','');}); <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Classes</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_gain.html">Gain</a></td></tr> -<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Provide an output multiplying the input by a constant. \( output = K \cdot input \). <a href="class_gain.html#details">More...</a><br /></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Provide an output multiplying the input by a constant. <a href="class_gain.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table> </div><!-- contents --> diff --git a/docs/doxygen/html/_gain_8h_source.html b/docs/doxygen/html/_gain_8h_source.html index 41069c4..99cf636 100644 --- a/docs/doxygen/html/_gain_8h_source.html +++ b/docs/doxygen/html/_gain_8h_source.html @@ -88,16 +88,17 @@ $(document).ready(function(){initNavTree('_gain_8h_source.html','');}); <div class="title">Gain.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_gain_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef GAIN_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define GAIN_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_gain_form.html">GainForm</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_gain.html"> 36</a></span> <span class="keyword">class </span><a class="code" href="class_gain.html">Gain</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_gain.html">Gain</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  ~<a class="code" href="class_gain.html">Gain</a>();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_gain.html#a42f48bfdfb3d6f593fcc599504dd2264">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_gain.html#a9d80d49f5123cf4859bf15a251e3923f"> 43</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_gain.html#a9d80d49f5123cf4859bf15a251e3923f">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="class_gain.html#a8768490f9cb20a6a8c9148d1c893e980"> 44</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_gain.html#a8768490f9cb20a6a8c9148d1c893e980">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_gain.html#a6b98027cbf545302867ad75f7ab84b93">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_gain.html#ae19d739112c3aad30c58bdfd98f442e7">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db">Move</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() { SetValue(m_value); }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetValue(<span class="keywordtype">double</span> value);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> GetValue()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_value; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_gain.html#a489572e289935d7256c037af682b9351">GetCopy</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">double</span> m_value = 1.0;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringValue = NULL;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">int</span> m_fontSize = 10;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  std::vector<wxPoint2DDouble> m_triPts;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#endif // GAIN_H</span></div><div class="ttc" id="class_gain_html_aa303bcc736ac5fad1f89c6cc87e859db"><div class="ttname"><a href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db">Gain::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00182">Gain.cpp:182</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. . </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00036">Gain.h:36</a></div></div> +<a href="_gain_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef GAIN_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define GAIN_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_gain_form.html">GainForm</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_gain.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_gain.html">Gain</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_gain.html">Gain</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  ~<a class="code" href="class_gain.html">Gain</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_gain.html#a42f48bfdfb3d6f593fcc599504dd2264">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_gain.html#a9d80d49f5123cf4859bf15a251e3923f"> 42</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_gain.html#a9d80d49f5123cf4859bf15a251e3923f">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_gain.html#a8768490f9cb20a6a8c9148d1c893e980"> 43</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_gain.html#a8768490f9cb20a6a8c9148d1c893e980">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_gain.html#a6b98027cbf545302867ad75f7ab84b93">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_gain.html#ae19d739112c3aad30c58bdfd98f442e7">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db">Move</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() { SetValue(m_value); }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetValue(<span class="keywordtype">double</span> value);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> GetValue()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_value; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_gain.html#a282cab6d339aa89a35c775bbea2aa117">Solve</a>(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_gain.html#a489572e289935d7256c037af682b9351">GetCopy</a>();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">double</span> m_value = 1.0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringValue = NULL;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">int</span> m_fontSize = 10;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  std::vector<wxPoint2DDouble> m_triPts;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> };</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#endif // GAIN_H</span></div><div class="ttc" id="class_gain_html_aa303bcc736ac5fad1f89c6cc87e859db"><div class="ttname"><a href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db">Gain::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00182">Gain.cpp:182</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00035">Gain.h:35</a></div></div> <div class="ttc" id="class_gain_html_a489572e289935d7256c037af682b9351"><div class="ttname"><a href="class_gain.html#a489572e289935d7256c037af682b9351">Gain::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00194">Gain.cpp:194</a></div></div> -<div class="ttc" id="class_gain_html_a8768490f9cb20a6a8c9148d1c893e980"><div class="ttname"><a href="class_gain.html#a8768490f9cb20a6a8c9148d1c893e980">Gain::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00044">Gain.h:44</a></div></div> +<div class="ttc" id="class_gain_html_a8768490f9cb20a6a8c9148d1c893e980"><div class="ttname"><a href="class_gain.html#a8768490f9cb20a6a8c9148d1c893e980">Gain::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00043">Gain.h:43</a></div></div> <div class="ttc" id="class_gain_html_a6b98027cbf545302867ad75f7ab84b93"><div class="ttname"><a href="class_gain.html#a6b98027cbf545302867ad75f7ab84b93">Gain::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00088">Gain.cpp:88</a></div></div> <div class="ttc" id="class_gain_html_ae19d739112c3aad30c58bdfd98f442e7"><div class="ttname"><a href="class_gain.html#ae19d739112c3aad30c58bdfd98f442e7">Gain::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00099">Gain.cpp:99</a></div></div> <div class="ttc" id="class_gain_form_html"><div class="ttname"><a href="class_gain_form.html">GainForm</a></div><div class="ttdoc">Form to edit the gain control data. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_form_8h_source.html#l00031">GainForm.h:31</a></div></div> <div class="ttc" id="_control_element_8h_html"><div class="ttname"><a href="_control_element_8h.html">ControlElement.h</a></div><div class="ttdoc">Base class of a control element. Provide general methods to other control classes. </div></div> -<div class="ttc" id="class_gain_html_a9d80d49f5123cf4859bf15a251e3923f"><div class="ttname"><a href="class_gain.html#a9d80d49f5123cf4859bf15a251e3923f">Gain::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00043">Gain.h:43</a></div></div> +<div class="ttc" id="class_gain_html_a282cab6d339aa89a35c775bbea2aa117"><div class="ttname"><a href="class_gain.html#a282cab6d339aa89a35c775bbea2aa117">Gain::Solve</a></div><div class="ttdeci">virtual bool Solve(double input, double timeStep)</div><div class="ttdoc">Multiply the input by a constant. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00188">Gain.cpp:188</a></div></div> +<div class="ttc" id="class_gain_html_a9d80d49f5123cf4859bf15a251e3923f"><div class="ttname"><a href="class_gain.html#a9d80d49f5123cf4859bf15a251e3923f">Gain::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00042">Gain.h:42</a></div></div> <div class="ttc" id="class_gain_html_a42f48bfdfb3d6f593fcc599504dd2264"><div class="ttname"><a href="class_gain.html#a42f48bfdfb3d6f593fcc599504dd2264">Gain::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8cpp_source.html#l00035">Gain.cpp:35</a></div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> <div class="ttc" id="classwx_g_l_string_html"><div class="ttname"><a href="classwx_g_l_string.html">wxGLString</a></div><div class="ttdef"><b>Definition:</b> <a href="wx_g_l_string_8h_source.html#l00077">wxGLString.h:77</a></div></div> diff --git a/docs/doxygen/html/_gain_form_8cpp_source.html b/docs/doxygen/html/_gain_form_8cpp_source.html index 92381b2..aa3d409 100644 --- a/docs/doxygen/html/_gain_form_8cpp_source.html +++ b/docs/doxygen/html/_gain_form_8cpp_source.html @@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('_gain_form_8cpp_source.html','');}); </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_gain_form_8h.html">GainForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_gain_8h.html">Gain.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> GainForm::GainForm(wxWindow* parent, <a class="code" href="class_gain.html">Gain</a>* gain) : <a class="code" href="class_gain_form_base.html">GainFormBase</a>(parent)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_parent = parent;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_gain = gain;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_textCtrlValue->SetValue(m_gain->StringFromDouble(m_gain->GetValue()));</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> GainForm::~GainForm() {}</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keywordtype">void</span> GainForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keywordtype">bool</span> GainForm::ValidateData()</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> value;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">if</span>(!m_gain->DoubleFromString(<span class="keyword">this</span>, m_textCtrlValue->GetValue(), value,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Gain value\"."</span>)))</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_gain->SetValue(value);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="ttc" id="_gain_form_8h_html"><div class="ttname"><a href="_gain_form_8h.html">GainForm.h</a></div></div> -<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. . </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00036">Gain.h:36</a></div></div> +<div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00035">Gain.h:35</a></div></div> <div class="ttc" id="class_gain_form_base_html"><div class="ttname"><a href="class_gain_form_base.html">GainFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00949">ElementForm.h:949</a></div></div> <div class="ttc" id="_gain_8h_html"><div class="ttname"><a href="_gain_8h.html">Gain.h</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_gain_form_8h_source.html b/docs/doxygen/html/_gain_form_8h_source.html index e0eb282..a6399b8 100644 --- a/docs/doxygen/html/_gain_form_8h_source.html +++ b/docs/doxygen/html/_gain_form_8h_source.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('_gain_form_8h_source.html','');}); <div class="title">GainForm.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_gain_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef GAINFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define GAINFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">class </span><a class="code" href="class_gain.html">Gain</a>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="class_gain_form.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="class_gain_form.html">GainForm</a> : <span class="keyword">public</span> <a class="code" href="class_gain_form_base.html">GainFormBase</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="class_gain_form.html">GainForm</a>(wxWindow* parent, <a class="code" href="class_gain.html">Gain</a>* gain);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_gain_form.html">GainForm</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  wxWindow* m_parent;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_gain.html">Gain</a>* m_gain;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#endif // GAINFORM_H</span></div><div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. . </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00036">Gain.h:36</a></div></div> +<a href="_gain_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef GAINFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define GAINFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">class </span><a class="code" href="class_gain.html">Gain</a>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="class_gain_form.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="class_gain_form.html">GainForm</a> : <span class="keyword">public</span> <a class="code" href="class_gain_form_base.html">GainFormBase</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="class_gain_form.html">GainForm</a>(wxWindow* parent, <a class="code" href="class_gain.html">Gain</a>* gain);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_gain_form.html">GainForm</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  wxWindow* m_parent;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_gain.html">Gain</a>* m_gain;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#endif // GAINFORM_H</span></div><div class="ttc" id="class_gain_html"><div class="ttname"><a href="class_gain.html">Gain</a></div><div class="ttdoc">Provide an output multiplying the input by a constant. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_8h_source.html#l00035">Gain.h:35</a></div></div> <div class="ttc" id="class_gain_form_base_html"><div class="ttname"><a href="class_gain_form_base.html">GainFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00949">ElementForm.h:949</a></div></div> <div class="ttc" id="class_gain_form_html"><div class="ttname"><a href="class_gain_form.html">GainForm</a></div><div class="ttdoc">Form to edit the gain control data. </div><div class="ttdef"><b>Definition:</b> <a href="_gain_form_8h_source.html#l00031">GainForm.h:31</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_general_properties_form_8cpp_source.html b/docs/doxygen/html/_general_properties_form_8cpp_source.html index 0eacf1c..614eac2 100644 --- a/docs/doxygen/html/_general_properties_form_8cpp_source.html +++ b/docs/doxygen/html/_general_properties_form_8cpp_source.html @@ -88,7 +88,8 @@ $(document).ready(function(){initNavTree('_general_properties_form_8cpp_source.h <div class="title">GeneralPropertiesForm.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_general_properties_form_8h.html">GeneralPropertiesForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "PropertiesData.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> GeneralPropertiesForm::GeneralPropertiesForm(wxWindow* parent, <a class="code" href="class_properties_data.html">PropertiesData</a>* properties)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  : <a class="code" href="class_general_properties_form_base.html">GeneralPropertiesFormBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_properties = properties;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keyword">auto</span> data = m_properties->GetGeneralPropertiesData();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="comment">// Clear the choices and rebuild to set the correct translations.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_choiceLanguage->Clear();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_choiceLanguage->Insert(_(<span class="stringliteral">"English"</span>), 0);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_choiceLanguage->Insert(_(<span class="stringliteral">"Portuguese"</span>), 1);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_choiceTheme->Clear();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choiceTheme->Insert(_(<span class="stringliteral">"Light"</span>), 0);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_choiceTheme->Insert(_(<span class="stringliteral">"Dark"</span>), 1);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">switch</span>(data.language) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">case</span> wxLANGUAGE_ENGLISH: {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_choiceLanguage->SetSelection(0);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">case</span> wxLANGUAGE_PORTUGUESE_BRAZILIAN: {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_choiceLanguage->SetSelection(1);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_choiceLanguage->SetSelection(wxNOT_FOUND);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">switch</span>(data.theme) {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">case</span> THEME_LIGHT: {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_choiceTheme->SetSelection(0);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">case</span> THEME_DARK: {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_choiceTheme->SetSelection(1);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> GeneralPropertiesForm::~GeneralPropertiesForm() {}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keywordtype">void</span> GeneralPropertiesForm::OnButtonOKClick(wxCommandEvent& event)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">bool</span> GeneralPropertiesForm::ValidateData()</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">auto</span> data = m_properties->GetGeneralPropertiesData();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">auto</span> checkData = m_properties->GetGeneralPropertiesData();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">bool</span> hasChanges = <span class="keyword">false</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  wxTextFile file(<span class="stringliteral">"config.ini"</span>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(!file.Create()) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(!file.Open()) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Fail to access the file.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  _(<span class="stringliteral">"It was not possible to access the init file.\nThe settings won't be applied."</span>),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  file.Clear();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  wxString line = <span class="stringliteral">"lang="</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">switch</span>(m_choiceLanguage->GetSelection()) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  line += <span class="stringliteral">"en"</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  data.language = wxLANGUAGE_ENGLISH;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  line += <span class="stringliteral">"pt-br"</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  data.language = wxLANGUAGE_PORTUGUESE_BRAZILIAN;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  file.AddLine(line);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span>(data.language != checkData.language) hasChanges = <span class="keyword">true</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  line = <span class="stringliteral">"theme="</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">switch</span>(m_choiceTheme->GetSelection()) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  line += <span class="stringliteral">"light"</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  data.theme = THEME_LIGHT;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  line += <span class="stringliteral">"dark"</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  data.theme = THEME_DARK;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  file.AddLine(line);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(data.theme != checkData.theme) hasChanges = <span class="keyword">true</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  file.Write();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  file.Close();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span>(hasChanges) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"The application must be restarted to settings changes be applied."</span>),</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  _(<span class="stringliteral">"Info"</span>), wxOK | wxCENTRE | wxICON_INFORMATION);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_properties->SetGeneralPropertiesData(data);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00057">PropertiesData.h:57</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_general_properties_form_8h.html">GeneralPropertiesForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_properties_data_8h.html">PropertiesData.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> GeneralPropertiesForm::GeneralPropertiesForm(wxWindow* parent, <a class="code" href="class_properties_data.html">PropertiesData</a>* properties)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  : <a class="code" href="class_general_properties_form_base.html">GeneralPropertiesFormBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_properties = properties;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keyword">auto</span> data = m_properties->GetGeneralPropertiesData();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="comment">// Clear the choices and rebuild to set the correct translations.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_choiceLanguage->Clear();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_choiceLanguage->Insert(_(<span class="stringliteral">"English"</span>), 0);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_choiceLanguage->Insert(_(<span class="stringliteral">"Portuguese"</span>), 1);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_choiceTheme->Clear();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choiceTheme->Insert(_(<span class="stringliteral">"Light"</span>), 0);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_choiceTheme->Insert(_(<span class="stringliteral">"Dark"</span>), 1);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">switch</span>(data.language) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">case</span> wxLANGUAGE_ENGLISH: {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_choiceLanguage->SetSelection(0);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">case</span> wxLANGUAGE_PORTUGUESE_BRAZILIAN: {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_choiceLanguage->SetSelection(1);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_choiceLanguage->SetSelection(wxNOT_FOUND);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">switch</span>(data.theme) {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">case</span> THEME_LIGHT: {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_choiceTheme->SetSelection(0);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">case</span> THEME_DARK: {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_choiceTheme->SetSelection(1);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> GeneralPropertiesForm::~GeneralPropertiesForm() {}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keywordtype">void</span> GeneralPropertiesForm::OnButtonOKClick(wxCommandEvent& event)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">bool</span> GeneralPropertiesForm::ValidateData()</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">auto</span> data = m_properties->GetGeneralPropertiesData();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">auto</span> checkData = m_properties->GetGeneralPropertiesData();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">bool</span> hasChanges = <span class="keyword">false</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  wxTextFile file(<span class="stringliteral">"config.ini"</span>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(!file.Create()) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(!file.Open()) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Fail to access the file.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  _(<span class="stringliteral">"It was not possible to access the init file.\nThe settings won't be applied."</span>),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  file.Clear();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  wxString line = <span class="stringliteral">"lang="</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">switch</span>(m_choiceLanguage->GetSelection()) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  line += <span class="stringliteral">"en"</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  data.language = wxLANGUAGE_ENGLISH;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  line += <span class="stringliteral">"pt-br"</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  data.language = wxLANGUAGE_PORTUGUESE_BRAZILIAN;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  file.AddLine(line);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span>(data.language != checkData.language) hasChanges = <span class="keyword">true</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  line = <span class="stringliteral">"theme="</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">switch</span>(m_choiceTheme->GetSelection()) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  line += <span class="stringliteral">"light"</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  data.theme = THEME_LIGHT;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  line += <span class="stringliteral">"dark"</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  data.theme = THEME_DARK;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  file.AddLine(line);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(data.theme != checkData.theme) hasChanges = <span class="keyword">true</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  file.Write();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  file.Close();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span>(hasChanges) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"The application must be restarted to settings changes be applied."</span>),</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  _(<span class="stringliteral">"Info"</span>), wxOK | wxCENTRE | wxICON_INFORMATION);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_properties->SetGeneralPropertiesData(data);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> }</div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdoc">General and simulation data manager. </div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00064">PropertiesData.h:64</a></div></div> +<div class="ttc" id="_properties_data_8h_html"><div class="ttname"><a href="_properties_data_8h.html">PropertiesData.h</a></div></div> <div class="ttc" id="_general_properties_form_8h_html"><div class="ttname"><a href="_general_properties_form_8h.html">GeneralPropertiesForm.h</a></div></div> <div class="ttc" id="class_general_properties_form_base_html"><div class="ttname"><a href="class_general_properties_form_base.html">GeneralPropertiesFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_form_8h_source.html#l00048">PropertiesForm.h:48</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_general_properties_form_8h_source.html b/docs/doxygen/html/_general_properties_form_8h_source.html index 63f2c24..fa7496f 100644 --- a/docs/doxygen/html/_general_properties_form_8h_source.html +++ b/docs/doxygen/html/_general_properties_form_8h_source.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('_general_properties_form_8h_source.htm <div class="title">GeneralPropertiesForm.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_general_properties_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef GENERALPROPERTIESFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define GENERALPROPERTIESFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "PropertiesForm.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/textfile.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <wx/msgdlg.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_general_properties_form.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_general_properties_form.html">GeneralPropertiesForm</a> : <span class="keyword">public</span> <a class="code" href="class_general_properties_form_base.html">GeneralPropertiesFormBase</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_general_properties_form.html">GeneralPropertiesForm</a>(wxWindow* parent, <a class="code" href="class_properties_data.html">PropertiesData</a>* properties);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_general_properties_form.html">GeneralPropertiesForm</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonOKClick(wxCommandEvent& event);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>* m_properties = NULL;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#endif // GENERALPROPERTIESFORM_H</span></div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00057">PropertiesData.h:57</a></div></div> +<a href="_general_properties_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef GENERALPROPERTIESFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define GENERALPROPERTIESFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "PropertiesForm.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/textfile.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <wx/msgdlg.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_general_properties_form.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_general_properties_form.html">GeneralPropertiesForm</a> : <span class="keyword">public</span> <a class="code" href="class_general_properties_form_base.html">GeneralPropertiesFormBase</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_general_properties_form.html">GeneralPropertiesForm</a>(wxWindow* parent, <a class="code" href="class_properties_data.html">PropertiesData</a>* properties);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_general_properties_form.html">GeneralPropertiesForm</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonOKClick(wxCommandEvent& event);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>* m_properties = NULL;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#endif // GENERALPROPERTIESFORM_H</span></div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdoc">General and simulation data manager. </div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00064">PropertiesData.h:64</a></div></div> <div class="ttc" id="class_general_properties_form_html"><div class="ttname"><a href="class_general_properties_form.html">GeneralPropertiesForm</a></div><div class="ttdoc">Form to edit the software&#39;s general data. </div><div class="ttdef"><b>Definition:</b> <a href="_general_properties_form_8h_source.html#l00035">GeneralPropertiesForm.h:35</a></div></div> <div class="ttc" id="class_general_properties_form_base_html"><div class="ttname"><a href="class_general_properties_form_base.html">GeneralPropertiesFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_form_8h_source.html#l00048">PropertiesForm.h:48</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_generator_stab_form_8cpp_source.html b/docs/doxygen/html/_generator_stab_form_8cpp_source.html index bfb4afc..6b06c32 100644 --- a/docs/doxygen/html/_generator_stab_form_8cpp_source.html +++ b/docs/doxygen/html/_generator_stab_form_8cpp_source.html @@ -88,9 +88,10 @@ $(document).ready(function(){initNavTree('_generator_stab_form_8cpp_source.html' <div class="title">GeneratorStabForm.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_generator_stab_form_8h.html">GeneratorStabForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_switching_form_8h.html">SwitchingForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_editor_8h.html">ControlEditor.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_control_element_container_8h.html">ControlElementContainer.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> GeneratorStabForm::GeneratorStabForm(wxWindow* parent, <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator) : <a class="code" href="class_generator_stab_form_base.html">GeneratorStabFormBase</a>(parent)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_syncGenerator = syncGenerator;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_parent = parent;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_checkBoxPlotSyncMachine->SetValue(data.plotSyncMachine);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_textCtrlInertia->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.inertia));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_textCtrlDamping->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.damping));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_checkBoxUseAVR->SetValue(data.useAVR);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_buttonEditAVR->Enable(data.useAVR);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_checkBoxUseSG->SetValue(data.useSpeedGovernor);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_buttonEditSG->Enable(data.useSpeedGovernor);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_textCtrlRa->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.armResistance));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_textCtrlXp->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.potierReactance));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_textCtrlSat->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.satFactor));</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_textCtrlSyncXd->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.syncXd));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_textCtrlSyncXq->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.syncXq));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_textCtrlTranXd->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.transXd));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_textCtrlTranXq->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.transXq));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_textCtrlTranTd0->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.transTd0));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_textCtrlTranTq0->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.transTq0));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_textCtrlSubXd->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.subXd));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_textCtrlSubXq->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.subXq));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_textCtrlSubTd0->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.subTd0));</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_textCtrlSubTq0->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.subTq0));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> GeneratorStabForm::~GeneratorStabForm() {}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">void</span> GeneratorStabForm::OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keywordtype">void</span> GeneratorStabForm::OnEditAVRButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_syncGenerator->GetElectricalData();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(!data.avr) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  data.avr = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="class_control_editor.html">ControlEditor</a>* cEditor = <span class="keyword">new</span> <a class="code" href="class_control_editor.html">ControlEditor</a>(m_parent, IOControl::IN_TERMINAL_VOLTAGE | IOControl::OUT_FIELD_VOLTAGE);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  cEditor->SetElementsList(data.avr->GetControlElementsList());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  cEditor->SetConnectionsList(data.avr->GetConnectionLineList());</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  cEditor->SetControlContainer(data.avr);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  cEditor->Show();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keywordtype">void</span> GeneratorStabForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keywordtype">void</span> GeneratorStabForm::OnSpeedGovernorButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_syncGenerator->GetElectricalData();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(!data.speedGov) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  data.speedGov = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="class_control_editor.html">ControlEditor</a>* cEditor = <span class="keyword">new</span> <a class="code" href="class_control_editor.html">ControlEditor</a>(m_parent, IOControl::IN_VELOCITY | IOControl::OUT_MEC_POWER);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  cEditor->SetElementsList(data.speedGov->GetControlElementsList());</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  cEditor->SetConnectionsList(data.speedGov->GetConnectionLineList());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  cEditor->SetControlContainer(data.speedGov);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  cEditor->Show();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keywordtype">void</span> GeneratorStabForm::OnSwitchingButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_syncGenerator);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  swForm.SetTitle(_(<span class="stringliteral">"Synchronous generator: Switching"</span>));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  swForm.ShowModal();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keywordtype">bool</span> GeneratorStabForm::ValidateData()</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_syncGenerator->GetElectricalData();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  data.plotSyncMachine = m_checkBoxPlotSyncMachine->GetValue();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlInertia->GetValue(), data.inertia,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Inertia\"."</span>)))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlDamping->GetValue(), data.damping,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Damping factor\"."</span>)))</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  data.useAVR = m_checkBoxUseAVR->GetValue();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  data.useSpeedGovernor = m_checkBoxUseSG->GetValue();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlRa->GetValue(), data.armResistance,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Armature resistance\"."</span>)))</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlXp->GetValue(), data.potierReactance,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Potier reactance\"."</span>)))</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlSat->GetValue(), data.satFactor,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Saturation factor\"."</span>)))</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_parent, m_textCtrlSyncXd->GetValue(), data.syncXd,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Synchronous direct-axis reactance\"."</span>)))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_parent, m_textCtrlSyncXq->GetValue(), data.syncXq,</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Synchronous quadrature-axis reactance\"."</span>)))</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  m_parent, m_textCtrlTranXd->GetValue(), data.transXd,</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Transitory direct-axis reactance\"."</span>)))</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_parent, m_textCtrlTranXq->GetValue(), data.transXq,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Transitory quadrature-axis reactance\"."</span>)))</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_parent, m_textCtrlTranTd0->GetValue(), data.transTd0,</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Transitory direct-axis time constant\"."</span>)))</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_parent, m_textCtrlTranTq0->GetValue(), data.transTq0,</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Transitory quadrature-axis time constant\"."</span>)))</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_parent, m_textCtrlSubXd->GetValue(), data.subXd,</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Subtransitory direct-axis reactance\"."</span>)))</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_parent, m_textCtrlSubXq->GetValue(), data.subXq,</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Subtransitory quadrature-axis reactance\"."</span>)))</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_parent, m_textCtrlSubTd0->GetValue(), data.subTd0,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Subtransitory direct-axis time constant\"."</span>)))</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  m_parent, m_textCtrlSubTq0->GetValue(), data.subTq0,</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Subtransitory quadrature-axis time constant\"."</span>)))</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  m_syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="keywordtype">void</span> GeneratorStabForm::UseAVRClick(wxCommandEvent& event) { m_buttonEditAVR->Enable(m_checkBoxUseAVR->GetValue()); }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="keywordtype">void</span> GeneratorStabForm::UseSGClick(wxCommandEvent& event) { m_buttonEditSG->Enable(m_checkBoxUseSG->GetValue()); }</div><div class="ttc" id="struct_sync_generator_electrical_data_html"><div class="ttname"><a href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00025">SyncGenerator.h:25</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_generator_stab_form_8h.html">GeneratorStabForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_switching_form_8h.html">SwitchingForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_sync_generator_8h.html">SyncGenerator.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_editor_8h.html">ControlEditor.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_control_element_container_8h.html">ControlElementContainer.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> GeneratorStabForm::GeneratorStabForm(wxWindow* parent, <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator) : <a class="code" href="class_generator_stab_form_base.html">GeneratorStabFormBase</a>(parent)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_syncGenerator = syncGenerator;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_parent = parent;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_checkBoxPlotSyncMachine->SetValue(data.plotSyncMachine);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_textCtrlInertia->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.inertia));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_textCtrlDamping->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.damping));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_checkBoxUseAVR->SetValue(data.useAVR);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_buttonEditAVR->Enable(data.useAVR);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_checkBoxUseSG->SetValue(data.useSpeedGovernor);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_buttonEditSG->Enable(data.useSpeedGovernor);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_textCtrlRa->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.armResistance));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_textCtrlXp->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.potierReactance));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_textCtrlSat->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.satFactor));</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_textCtrlSyncXd->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.syncXd));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_textCtrlSyncXq->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.syncXq));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_textCtrlTranXd->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.transXd));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_textCtrlTranXq->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.transXq));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_textCtrlTranTd0->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.transTd0));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_textCtrlTranTq0->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.transTq0));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_textCtrlSubXd->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.subXd));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_textCtrlSubXq->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.subXq));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_textCtrlSubTd0->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.subTd0));</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_textCtrlSubTq0->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.subTq0));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> GeneratorStabForm::~GeneratorStabForm() {}</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">void</span> GeneratorStabForm::OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keywordtype">void</span> GeneratorStabForm::OnEditAVRButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_syncGenerator->GetElectricalData();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(!data.avr) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  data.avr = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  m_syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="class_control_editor.html">ControlEditor</a>* cEditor = <span class="keyword">new</span> <a class="code" href="class_control_editor.html">ControlEditor</a>(m_parent, IOControl::IN_TERMINAL_VOLTAGE | IOControl::OUT_FIELD_VOLTAGE);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  cEditor->SetElementsList(data.avr->GetControlElementsList());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  cEditor->SetConnectionsList(data.avr->GetConnectionLineList());</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  cEditor->SetControlContainer(data.avr);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  cEditor->Show();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keywordtype">void</span> GeneratorStabForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keywordtype">void</span> GeneratorStabForm::OnSpeedGovernorButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_syncGenerator->GetElectricalData();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(!data.speedGov) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  data.speedGov = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="class_control_editor.html">ControlEditor</a>* cEditor = <span class="keyword">new</span> <a class="code" href="class_control_editor.html">ControlEditor</a>(m_parent, IOControl::IN_VELOCITY | IOControl::OUT_MEC_POWER);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  cEditor->SetElementsList(data.speedGov->GetControlElementsList());</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  cEditor->SetConnectionsList(data.speedGov->GetConnectionLineList());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  cEditor->SetControlContainer(data.speedGov);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  cEditor->Show();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keywordtype">void</span> GeneratorStabForm::OnSwitchingButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_syncGenerator);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  swForm.SetTitle(_(<span class="stringliteral">"Synchronous generator: Switching"</span>));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  swForm.ShowModal();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keywordtype">bool</span> GeneratorStabForm::ValidateData()</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_syncGenerator->GetElectricalData();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  data.plotSyncMachine = m_checkBoxPlotSyncMachine->GetValue();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlInertia->GetValue(), data.inertia,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Inertia\"."</span>)))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlDamping->GetValue(), data.damping,</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Damping factor\"."</span>)))</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  data.useAVR = m_checkBoxUseAVR->GetValue();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  data.useSpeedGovernor = m_checkBoxUseSG->GetValue();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlRa->GetValue(), data.armResistance,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Armature resistance\"."</span>)))</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlXp->GetValue(), data.potierReactance,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Potier reactance\"."</span>)))</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlSat->GetValue(), data.satFactor,</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Saturation factor\"."</span>)))</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_parent, m_textCtrlSyncXd->GetValue(), data.syncXd,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Synchronous direct-axis reactance\"."</span>)))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_parent, m_textCtrlSyncXq->GetValue(), data.syncXq,</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Synchronous quadrature-axis reactance\"."</span>)))</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  m_parent, m_textCtrlTranXd->GetValue(), data.transXd,</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Transitory direct-axis reactance\"."</span>)))</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_parent, m_textCtrlTranXq->GetValue(), data.transXq,</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Transitory quadrature-axis reactance\"."</span>)))</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_parent, m_textCtrlTranTd0->GetValue(), data.transTd0,</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Transitory direct-axis time constant\"."</span>)))</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_parent, m_textCtrlTranTq0->GetValue(), data.transTq0,</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Transitory quadrature-axis time constant\"."</span>)))</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_parent, m_textCtrlSubXd->GetValue(), data.subXd,</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Subtransitory direct-axis reactance\"."</span>)))</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_parent, m_textCtrlSubXq->GetValue(), data.subXq,</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Subtransitory quadrature-axis reactance\"."</span>)))</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_parent, m_textCtrlSubTd0->GetValue(), data.subTd0,</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Subtransitory direct-axis time constant\"."</span>)))</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  m_parent, m_textCtrlSubTq0->GetValue(), data.subTq0,</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Subtransitory quadrature-axis time constant\"."</span>)))</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  m_syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="keywordtype">void</span> GeneratorStabForm::UseAVRClick(wxCommandEvent& event) { m_buttonEditAVR->Enable(m_checkBoxUseAVR->GetValue()); }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="keywordtype">void</span> GeneratorStabForm::UseSGClick(wxCommandEvent& event) { m_buttonEditSG->Enable(m_checkBoxUseSG->GetValue()); }</div><div class="ttc" id="struct_sync_generator_electrical_data_html"><div class="ttname"><a href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00025">SyncGenerator.h:25</a></div></div> <div class="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdoc">Form to edit the switching data of power elements for electromechanical transient studies...</div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00032">SwitchingForm.h:32</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="_sync_generator_8h_html"><div class="ttname"><a href="_sync_generator_8h.html">SyncGenerator.h</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="_control_editor_8h_html"><div class="ttname"><a href="_control_editor_8h.html">ControlEditor.h</a></div></div> <div class="ttc" id="_generator_stab_form_8h_html"><div class="ttname"><a href="_generator_stab_form_8h.html">GeneratorStabForm.h</a></div></div> <div class="ttc" id="_switching_form_8h_html"><div class="ttname"><a href="_switching_form_8h.html">SwitchingForm.h</a></div></div> diff --git a/docs/doxygen/html/_generator_stab_form_8h_source.html b/docs/doxygen/html/_generator_stab_form_8h_source.html index 3469265..62ee696 100644 --- a/docs/doxygen/html/_generator_stab_form_8h_source.html +++ b/docs/doxygen/html/_generator_stab_form_8h_source.html @@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('_generator_stab_form_8h_source.html',' </div><!--header--> <div class="contents"> <a href="_generator_stab_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef GENERATORSTABFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define GENERATORSTABFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_switching_form.html">SwitchingForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span><a class="code" href="class_sync_generator.html">SyncGenerator</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">class </span><a class="code" href="class_control_editor.html">ControlEditor</a>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_control_element_container.html">ControlElementContainer</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_generator_stab_form.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_generator_stab_form.html">GeneratorStabForm</a> : <span class="keyword">public</span> <a class="code" href="class_generator_stab_form_base.html">GeneratorStabFormBase</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_generator_stab_form.html">GeneratorStabForm</a>(wxWindow* parent, <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_generator_stab_form.html">GeneratorStabForm</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UseAVRClick(wxCommandEvent& event);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UseSGClick(wxCommandEvent& event);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnEditAVRButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSpeedGovernorButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSwitchingButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* m_syncGenerator = NULL;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#endif // GENERATORSTABFORM_H</span></div><div class="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdoc">Form to edit the switching data of power elements for electromechanical transient studies...</div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00032">SwitchingForm.h:32</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="class_generator_stab_form_html"><div class="ttname"><a href="class_generator_stab_form.html">GeneratorStabForm</a></div><div class="ttdoc">Form to edit the synchronous generator data for electromechanical studies. </div><div class="ttdef"><b>Definition:</b> <a href="_generator_stab_form_8h_source.html#l00035">GeneratorStabForm.h:35</a></div></div> <div class="ttc" id="class_control_element_container_html"><div class="ttname"><a href="class_control_element_container.html">ControlElementContainer</a></div><div class="ttdoc">Class that can contain all control elements. Can identify (using RTTI) the elements from a generic li...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00045">ControlElementContainer.h:45</a></div></div> <div class="ttc" id="class_generator_stab_form_base_html"><div class="ttname"><a href="class_generator_stab_form_base.html">GeneratorStabFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00247">ElementForm.h:247</a></div></div> diff --git a/docs/doxygen/html/_graphical_element_8cpp_source.html b/docs/doxygen/html/_graphical_element_8cpp_source.html index a434513..d5d8d72 100644 --- a/docs/doxygen/html/_graphical_element_8cpp_source.html +++ b/docs/doxygen/html/_graphical_element_8cpp_source.html @@ -88,7 +88,8 @@ $(document).ready(function(){initNavTree('_graphical_element_8cpp_source.html',' <div class="title">GraphicalElement.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "GraphicalElement.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> GraphicalElement::GraphicalElement() : <a class="code" href="class_element.html">Element</a>()</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> GraphicalElement::~GraphicalElement()</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_graphical_element_8h.html">GraphicalElement.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> GraphicalElement::GraphicalElement() : <a class="code" href="class_element.html">Element</a>()</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> GraphicalElement::~GraphicalElement()</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="_graphical_element_8h_html"><div class="ttname"><a href="_graphical_element_8h.html">GraphicalElement.h</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_graphical_element_8h.html b/docs/doxygen/html/_graphical_element_8h.html new file mode 100644 index 0000000..362b0bf --- /dev/null +++ b/docs/doxygen/html/_graphical_element_8h.html @@ -0,0 +1,115 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/GraphicalElement.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_graphical_element_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">GraphicalElement.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_element_8h_source.html">Element.h</a>"</code><br /> +</div> +<p><a href="_graphical_element_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_graphical_element.html">GraphicalElement</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Abstract class for graphical elements shown with power elements in workspace. <a href="class_graphical_element.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_graphical_element_8h.html">GraphicalElement.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_graphical_element_8h_source.html b/docs/doxygen/html/_graphical_element_8h_source.html index 3331a7f..3f28397 100644 --- a/docs/doxygen/html/_graphical_element_8h_source.html +++ b/docs/doxygen/html/_graphical_element_8h_source.html @@ -88,15 +88,15 @@ $(document).ready(function(){initNavTree('_graphical_element_8h_source.html','') <div class="title">GraphicalElement.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef GRAPHICALELEMENT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define GRAPHICALELEMENT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="class_graphical_element.html"> 23</a></span> <span class="keyword">class </span><a class="code" href="class_graphical_element.html">GraphicalElement</a> : <span class="keyword">public</span> <a class="code" href="class_element.html">Element</a></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <a class="code" href="class_graphical_element.html">GraphicalElement</a>();</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  ~<a class="code" href="class_graphical_element.html">GraphicalElement</a>();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> };</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#endif // GRAPHICALELEMENT_H</span></div><div class="ttc" id="class_graphical_element_html"><div class="ttname"><a href="class_graphical_element.html">GraphicalElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_graphical_element_8h_source.html#l00023">GraphicalElement.h:23</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> -<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div><div class="ttdoc">Class to manage color of OpenGL. </div></div> +<a href="_graphical_element_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef GRAPHICALELEMENT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define GRAPHICALELEMENT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="class_graphical_element.html"> 30</a></span> <span class="keyword">class </span><a class="code" href="class_graphical_element.html">GraphicalElement</a> : <span class="keyword">public</span> <a class="code" href="class_element.html">Element</a></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="class_graphical_element.html">GraphicalElement</a>();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  ~<a class="code" href="class_graphical_element.html">GraphicalElement</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> };</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#endif // GRAPHICALELEMENT_H</span></div><div class="ttc" id="class_graphical_element_html"><div class="ttname"><a href="class_graphical_element.html">GraphicalElement</a></div><div class="ttdoc">Abstract class for graphical elements shown with power elements in workspace. </div><div class="ttdef"><b>Definition:</b> <a href="_graphical_element_8h_source.html#l00030">GraphicalElement.h:30</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>GraphicalElement.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_graphical_element_8h.html">GraphicalElement.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_i_o_control_8cpp_source.html b/docs/doxygen/html/_i_o_control_8cpp_source.html index 8e9be8b..22c79bf 100644 --- a/docs/doxygen/html/_i_o_control_8cpp_source.html +++ b/docs/doxygen/html/_i_o_control_8cpp_source.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('_i_o_control_8cpp_source.html','');}); <div class="title">IOControl.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_i_o_control_8h.html">IOControl.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_i_o_control_form_8h.html">IOControlForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> IOControl::IOControl(<span class="keywordtype">int</span> ioFlags, <span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_ioFlags = ioFlags;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="class_node.html">Node</a>* node = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position, Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_nodeList.push_back(node);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">if</span>(ioFlags & IN_TERMINAL_VOLTAGE)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  SetValue(IN_TERMINAL_VOLTAGE);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ioFlags & IN_VELOCITY)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  SetValue(IN_VELOCITY);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  node->StartMove(m_position);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> IOControl::~IOControl() {}</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4"> 36</a></span> <span class="keywordtype">void</span> <a class="code" href="class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4">IOControl::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword"></span>{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::vector<wxPoint2DDouble> pts;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  pts.push_back(m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  pts.push_back(m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize - 10, m_borderSize));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  pts.push_back(m_position + wxPoint2DDouble(m_width / 2 - m_borderSize, 0));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  pts.push_back(m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize - 10, -m_borderSize));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  pts.push_back(m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  pts.push_back(m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize));</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  pts.push_back(m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  pts.push_back(m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize - 10));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  pts.push_back(m_position + wxPoint2DDouble(0, m_height / 2 - m_borderSize));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  pts.push_back(m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize - 10));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  pts.push_back(m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize + 10, m_borderSize));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  pts.push_back(m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  pts.push_back(m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize));</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  pts.push_back(m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize + 10, -m_borderSize));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  pts.push_back(m_position + wxPoint2DDouble(-m_width / 2 + m_borderSize, 0));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  pts.push_back(m_position + wxPoint2DDouble(0, -m_height / 2 + m_borderSize));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  pts.push_back(m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize + 10));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  pts.push_back(m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  pts.push_back(m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  pts.push_back(m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize + 10));</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  glColor4dv(m_selectionColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::vector<wxPoint2DDouble> selPts = pts;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  selPts[0] += wxPoint2DDouble(-borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  selPts[1] += wxPoint2DDouble(borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  selPts[2] += wxPoint2DDouble(1.5 * borderSize / 2, 0);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  selPts[3] += wxPoint2DDouble(borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  selPts[4] += wxPoint2DDouble(-borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  selPts[0] += wxPoint2DDouble(-borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  selPts[1] += wxPoint2DDouble(borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  selPts[2] += wxPoint2DDouble(borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  selPts[3] += wxPoint2DDouble(0, 1.5 * borderSize / 2);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  selPts[4] += wxPoint2DDouble(-borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  selPts[0] += wxPoint2DDouble(-borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  selPts[1] += wxPoint2DDouble(borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  selPts[2] += wxPoint2DDouble(borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  selPts[3] += wxPoint2DDouble(-borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  selPts[4] += wxPoint2DDouble(-1.5 * borderSize / 2, 0);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  selPts[0] += wxPoint2DDouble(0, -1.5 * borderSize / 2);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  selPts[1] += wxPoint2DDouble(borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  selPts[2] += wxPoint2DDouble(borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  selPts[3] += wxPoint2DDouble(-borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  selPts[4] += wxPoint2DDouble(-borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="class_element.html#a103b3cb2670012b2695940b094f63ab3">DrawLine</a>(selPts, GL_POLYGON);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  glLineWidth(1.0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="class_element.html#a103b3cb2670012b2695940b094f63ab3">DrawLine</a>(pts, GL_POLYGON);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="class_element.html#a103b3cb2670012b2695940b094f63ab3">DrawLine</a>(pts, GL_LINE_LOOP);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// Plot number.</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_glStringValue->bind();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  m_glStringValue->render(m_position.m_x - 5, m_position.m_y);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_glStringValue->render(m_position.m_x, m_position.m_y - 5);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  m_glStringValue->render(m_position.m_x + 5, m_position.m_y);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_glStringValue->render(m_position.m_x, m_position.m_y + 5);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  DrawNodes();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439"> 122</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439">IOControl::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="class_i_o_control_form.html">IOControlForm</a>* form = <span class="keyword">new</span> <a class="code" href="class_i_o_control_form.html">IOControlForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  form->Destroy();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  form->Destroy();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="class_i_o_control.html#a47a5633ed68ef0648623b9733dc5dab9"> 133</a></span> <span class="keywordtype">void</span> <a class="code" href="class_i_o_control.html#a47a5633ed68ef0648623b9733dc5dab9">IOControl::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_angle += 90.0;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  m_angle -= 90.0;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  m_angle = 0.0;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_angle = 270.0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  UpdatePoints();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> wxString IOControl::GenerateText()</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  wxString omega = wxString::FromUTF8(<span class="stringliteral">"\xCF\x89"</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">switch</span>(m_value) {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">case</span> IN_TERMINAL_VOLTAGE: {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  m_ioNodeType = Node::NODE_OUT;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Vt"</span>);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">case</span> IN_VELOCITY: {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_ioNodeType = Node::NODE_OUT;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> omega;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">case</span> IN_ACTIVE_POWER: {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_ioNodeType = Node::NODE_OUT;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Pe"</span>);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">case</span> IN_REACTIVE_POWER: {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_ioNodeType = Node::NODE_OUT;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Qe"</span>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">case</span> OUT_FIELD_VOLTAGE: {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_ioNodeType = Node::NODE_IN;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Vf"</span>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">case</span> OUT_MEC_POWER: {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  m_ioNodeType = Node::NODE_IN;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Pm"</span>);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="keywordtype">void</span> IOControl::SetValue(IOFlags value)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  m_value = value;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  wxString text = GenerateText();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  wxScreenDC dc;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span>(m_glStringValue) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">delete</span> m_glStringValue;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_glStringValue = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(text);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  m_glStringValue->setFont(font);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  m_glStringValue->consolidate(&dc);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  m_width = m_glStringValue->getWidth() + 10 + 2 * m_borderSize;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  m_height = m_glStringValue->getheight() + 10 + 2 * m_borderSize;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_position); <span class="comment">// Update rectangle.</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  UpdatePoints();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="keywordtype">void</span> IOControl::UpdatePoints()</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>(m_nodeList.size() != 0) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="class_node.html">Node</a>* node = m_nodeList[0];</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span>(node->GetNodeType() != m_ioNodeType) {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// Rotate 180 degrees</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  node->Rotate();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  node->Rotate();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  node->SetNodeType(m_ioNodeType);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span>(m_ioNodeType == Node::NODE_IN)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  node->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  node->SetPosition(m_position + wxPoint2DDouble(m_width / 2 - 2, 0));</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span>(m_ioNodeType == Node::NODE_IN)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  node->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  node->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2 - 2));</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">if</span>(m_ioNodeType == Node::NODE_IN)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  node->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  node->SetPosition(m_position + wxPoint2DDouble(2 - m_width / 2, 0));</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span>(m_ioNodeType == Node::NODE_IN)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  node->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  node->SetPosition(m_position + wxPoint2DDouble(0, 2 - m_height / 2));</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7"> 243</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7">IOControl::GetCopy</a>()</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* copy = <span class="keyword">new</span> <a class="code" href="class_i_o_control.html">IOControl</a>(m_ioFlags, m_elementID);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  SetValue(m_value);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_i_o_control_8h.html">IOControl.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_i_o_control_form_8h.html">IOControlForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> IOControl::IOControl(<span class="keywordtype">int</span> ioFlags, <span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_ioFlags = ioFlags;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="class_node.html">Node</a>* node = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position, Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_nodeList.push_back(node);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">if</span>(ioFlags & IN_TERMINAL_VOLTAGE)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  SetValue(IN_TERMINAL_VOLTAGE);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ioFlags & IN_VELOCITY)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  SetValue(IN_VELOCITY);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  node->StartMove(m_position);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> IOControl::~IOControl() {}</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4"> 36</a></span> <span class="keywordtype">void</span> <a class="code" href="class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4">IOControl::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword"></span>{</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::vector<wxPoint2DDouble> pts;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  pts.push_back(m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  pts.push_back(m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize - 10, m_borderSize));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  pts.push_back(m_position + wxPoint2DDouble(m_width / 2 - m_borderSize, 0));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  pts.push_back(m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize - 10, -m_borderSize));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  pts.push_back(m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  pts.push_back(m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize));</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  pts.push_back(m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  pts.push_back(m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize - 10));</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  pts.push_back(m_position + wxPoint2DDouble(0, m_height / 2 - m_borderSize));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  pts.push_back(m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize - 10));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  pts.push_back(m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize + 10, m_borderSize));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  pts.push_back(m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  pts.push_back(m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize));</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  pts.push_back(m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize + 10, -m_borderSize));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  pts.push_back(m_position + wxPoint2DDouble(-m_width / 2 + m_borderSize, 0));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  pts.push_back(m_position + wxPoint2DDouble(0, -m_height / 2 + m_borderSize));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  pts.push_back(m_rect.GetRightTop() + wxPoint2DDouble(-m_borderSize, m_borderSize + 10));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  pts.push_back(m_rect.GetRightBottom() + wxPoint2DDouble(-m_borderSize, -m_borderSize));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  pts.push_back(m_rect.GetLeftBottom() + wxPoint2DDouble(m_borderSize, -m_borderSize));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  pts.push_back(m_rect.GetLeftTop() + wxPoint2DDouble(m_borderSize, m_borderSize + 10));</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  glColor4dv(m_selectionColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::vector<wxPoint2DDouble> selPts = pts;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  selPts[0] += wxPoint2DDouble(-borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  selPts[1] += wxPoint2DDouble(borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  selPts[2] += wxPoint2DDouble(1.5 * borderSize / 2, 0);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  selPts[3] += wxPoint2DDouble(borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  selPts[4] += wxPoint2DDouble(-borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  selPts[0] += wxPoint2DDouble(-borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  selPts[1] += wxPoint2DDouble(borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  selPts[2] += wxPoint2DDouble(borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  selPts[3] += wxPoint2DDouble(0, 1.5 * borderSize / 2);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  selPts[4] += wxPoint2DDouble(-borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  selPts[0] += wxPoint2DDouble(-borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  selPts[1] += wxPoint2DDouble(borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  selPts[2] += wxPoint2DDouble(borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  selPts[3] += wxPoint2DDouble(-borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  selPts[4] += wxPoint2DDouble(-1.5 * borderSize / 2, 0);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  selPts[0] += wxPoint2DDouble(0, -1.5 * borderSize / 2);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  selPts[1] += wxPoint2DDouble(borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  selPts[2] += wxPoint2DDouble(borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  selPts[3] += wxPoint2DDouble(-borderSize / 2, borderSize / 2);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  selPts[4] += wxPoint2DDouble(-borderSize / 2, -borderSize / 2);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="class_element.html#a103b3cb2670012b2695940b094f63ab3">DrawLine</a>(selPts, GL_POLYGON);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  glLineWidth(1.0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="class_element.html#a103b3cb2670012b2695940b094f63ab3">DrawLine</a>(pts, GL_POLYGON);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="class_element.html#a103b3cb2670012b2695940b094f63ab3">DrawLine</a>(pts, GL_LINE_LOOP);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// Plot number.</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_glStringValue->bind();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  m_glStringValue->render(m_position.m_x - 5, m_position.m_y);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_glStringValue->render(m_position.m_x, m_position.m_y - 5);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  m_glStringValue->render(m_position.m_x + 5, m_position.m_y);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_glStringValue->render(m_position.m_x, m_position.m_y + 5);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  DrawNodes();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439"> 122</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439">IOControl::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="class_i_o_control_form.html">IOControlForm</a>* form = <span class="keyword">new</span> <a class="code" href="class_i_o_control_form.html">IOControlForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  form->Destroy();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  form->Destroy();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="class_i_o_control.html#a47a5633ed68ef0648623b9733dc5dab9"> 133</a></span> <span class="keywordtype">void</span> <a class="code" href="class_i_o_control.html#a47a5633ed68ef0648623b9733dc5dab9">IOControl::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_angle += 90.0;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  m_angle -= 90.0;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  m_angle = 0.0;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_angle = 270.0;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  UpdatePoints();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> wxString IOControl::GenerateText()</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  wxString omega = wxString::FromUTF8(<span class="stringliteral">"\xCF\x89"</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">switch</span>(m_value) {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">case</span> IN_TERMINAL_VOLTAGE: {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  m_ioNodeType = Node::NODE_OUT;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Vt"</span>);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">case</span> IN_VELOCITY: {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_ioNodeType = Node::NODE_OUT;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> omega;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">case</span> IN_ACTIVE_POWER: {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m_ioNodeType = Node::NODE_OUT;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Pe"</span>);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">case</span> IN_REACTIVE_POWER: {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_ioNodeType = Node::NODE_OUT;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Qe"</span>);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">case</span> OUT_FIELD_VOLTAGE: {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_ioNodeType = Node::NODE_IN;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Vf"</span>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">case</span> OUT_MEC_POWER: {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  m_ioNodeType = Node::NODE_IN;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> _(<span class="stringliteral">"Pm"</span>);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="keywordtype">void</span> IOControl::SetValue(IOFlags value)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  m_value = value;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  wxString text = GenerateText();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  wxScreenDC dc;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span>(m_glStringValue) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">delete</span> m_glStringValue;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_glStringValue = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(text);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  m_glStringValue->setFont(font);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  m_glStringValue->consolidate(&dc);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  m_width = m_glStringValue->getWidth() + 10 + 2 * m_borderSize;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  m_height = m_glStringValue->getheight() + 10 + 2 * m_borderSize;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_position); <span class="comment">// Update rectangle.</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  UpdatePoints();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="keywordtype">void</span> IOControl::UpdatePoints()</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>(m_nodeList.size() != 0) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="class_node.html">Node</a>* node = m_nodeList[0];</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span>(node->GetNodeType() != m_ioNodeType) {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="comment">// Rotate 180 degrees</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  node->Rotate();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  node->Rotate();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  node->SetNodeType(m_ioNodeType);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span>(m_ioNodeType == Node::NODE_IN)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  node->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  node->SetPosition(m_position + wxPoint2DDouble(m_width / 2 - 2, 0));</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span>(m_ioNodeType == Node::NODE_IN)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  node->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  node->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2 - 2));</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">if</span>(m_ioNodeType == Node::NODE_IN)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  node->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  node->SetPosition(m_position + wxPoint2DDouble(2 - m_width / 2, 0));</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span>(m_ioNodeType == Node::NODE_IN)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  node->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  node->SetPosition(m_position + wxPoint2DDouble(0, 2 - m_height / 2));</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7"> 243</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7">IOControl::GetCopy</a>()</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="class_i_o_control.html">IOControl</a>* copy = <span class="keyword">new</span> <a class="code" href="class_i_o_control.html">IOControl</a>(m_ioFlags, m_elementID);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  m_glStringValue = NULL;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  SetValue(m_value);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_element_html_a103b3cb2670012b2695940b094f63ab3"><div class="ttname"><a href="class_element.html#a103b3cb2670012b2695940b094f63ab3">Element::DrawLine</a></div><div class="ttdeci">virtual void DrawLine(std::vector< wxPoint2DDouble > points, GLenum mode=GL_LINE_STRIP) const</div><div class="ttdoc">Draw line. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00089">Element.cpp:89</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> <div class="ttc" id="class_i_o_control_html_a47a5633ed68ef0648623b9733dc5dab9"><div class="ttname"><a href="class_i_o_control.html#a47a5633ed68ef0648623b9733dc5dab9">IOControl::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_i_o_control_8cpp_source.html#l00133">IOControl.cpp:133</a></div></div> diff --git a/docs/doxygen/html/_i_o_control_8h_source.html b/docs/doxygen/html/_i_o_control_8h_source.html index ae24203..4950e4d 100644 --- a/docs/doxygen/html/_i_o_control_8h_source.html +++ b/docs/doxygen/html/_i_o_control_8h_source.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('_i_o_control_8h_source.html','');}); <div class="title">IOControl.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_i_o_control_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef IOCONTROL_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define IOCONTROL_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_i_o_control_form.html">IOControlForm</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_i_o_control.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_i_o_control.html">IOControl</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">enum</span> IOFlags {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  IN_TERMINAL_VOLTAGE = 1 << 0,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  IN_VELOCITY = 1 << 1,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  IN_ACTIVE_POWER = 1 << 2,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  IN_REACTIVE_POWER = 1 << 3,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  OUT_FIELD_VOLTAGE = 1 << 4,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  OUT_MEC_POWER = 1 << 5</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_i_o_control.html">IOControl</a>(<span class="keywordtype">int</span> ioFlags, <span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ~<a class="code" href="class_i_o_control.html">IOControl</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="class_i_o_control.html#aa064c5d70e562334e2b374f919f42ef1"> 51</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_i_o_control.html#aa064c5d70e562334e2b374f919f42ef1">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_i_o_control.html#adebd59a32fd699ba4dff4dff44dfbf90"> 52</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_i_o_control.html#adebd59a32fd699ba4dff4dff44dfbf90">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_i_o_control.html#a47a5633ed68ef0648623b9733dc5dab9">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() { SetValue(m_value); }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> wxString GenerateText();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> IOFlags GetValue()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_value; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetValue(IOFlags value);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">int</span> GetIOFlags()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_ioFlags; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> Node::NodeType GetType() { <span class="keywordflow">return</span> m_ioNodeType; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7">GetCopy</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  IOFlags m_value;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">int</span> m_ioFlags;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  Node::NodeType m_ioNodeType = Node::NODE_IN;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringValue = NULL;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">int</span> m_fontSize = 10;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#endif // IOCONTROL_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_i_o_control_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef IOCONTROL_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define IOCONTROL_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_i_o_control_form.html">IOControlForm</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_i_o_control.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_i_o_control.html">IOControl</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">enum</span> IOFlags {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  IN_TERMINAL_VOLTAGE = 1 << 0,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  IN_VELOCITY = 1 << 1,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  IN_ACTIVE_POWER = 1 << 2,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  IN_REACTIVE_POWER = 1 << 3,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  OUT_FIELD_VOLTAGE = 1 << 4,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  OUT_MEC_POWER = 1 << 5</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="class_i_o_control.html">IOControl</a>(<span class="keywordtype">int</span> ioFlags, <span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  ~<a class="code" href="class_i_o_control.html">IOControl</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="class_i_o_control.html#aa064c5d70e562334e2b374f919f42ef1"> 51</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_i_o_control.html#aa064c5d70e562334e2b374f919f42ef1">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_i_o_control.html#adebd59a32fd699ba4dff4dff44dfbf90"> 52</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_i_o_control.html#adebd59a32fd699ba4dff4dff44dfbf90">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_i_o_control.html#a47a5633ed68ef0648623b9733dc5dab9">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() { SetValue(m_value); }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> wxString GenerateText();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> IOFlags GetValue()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_value; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetValue(IOFlags value);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">int</span> GetIOFlags()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_ioFlags; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> Node::NodeType GetType() { <span class="keywordflow">return</span> m_ioNodeType; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7">GetCopy</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  IOFlags m_value;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">int</span> m_ioFlags;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  Node::NodeType m_ioNodeType = Node::NODE_IN;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringValue = NULL;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">int</span> m_fontSize = 10;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#endif // IOCONTROL_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_i_o_control_html_aa064c5d70e562334e2b374f919f42ef1"><div class="ttname"><a href="class_i_o_control.html#aa064c5d70e562334e2b374f919f42ef1">IOControl::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00051">IOControl.h:51</a></div></div> <div class="ttc" id="class_i_o_control_html_a47a5633ed68ef0648623b9733dc5dab9"><div class="ttname"><a href="class_i_o_control.html#a47a5633ed68ef0648623b9733dc5dab9">IOControl::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_i_o_control_8cpp_source.html#l00133">IOControl.cpp:133</a></div></div> <div class="ttc" id="class_i_o_control_html"><div class="ttname"><a href="class_i_o_control.html">IOControl</a></div><div class="ttdoc">Provides the communication with the power element. </div><div class="ttdef"><b>Definition:</b> <a href="_i_o_control_8h_source.html#l00035">IOControl.h:35</a></div></div> diff --git a/docs/doxygen/html/_ind_motor_8cpp_source.html b/docs/doxygen/html/_ind_motor_8cpp_source.html index d690c6f..3b97823 100644 --- a/docs/doxygen/html/_ind_motor_8cpp_source.html +++ b/docs/doxygen/html/_ind_motor_8cpp_source.html @@ -88,8 +88,8 @@ $(document).ready(function(){initNavTree('_ind_motor_8cpp_source.html','');}); <div class="title">IndMotor.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_ind_motor_form_8h.html">IndMotorForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "IndMotor.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> IndMotor::IndMotor() : <a class="code" href="class_machines.html">Machines</a>() {}</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> IndMotor::IndMotor(wxString name) : <a class="code" href="class_machines.html">Machines</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> IndMotor::~IndMotor() {}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keywordtype">void</span> IndMotor::DrawSymbol()<span class="keyword"> const</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword"></span>{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  std::vector<wxPoint2DDouble> mPts;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  mPts.push_back(wxPoint2DDouble(-10, 13) + m_position);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  mPts.push_back(wxPoint2DDouble(-10, -13) + m_position);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  mPts.push_back(wxPoint2DDouble(0, 2) + m_position);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  mPts.push_back(wxPoint2DDouble(10, -13) + m_position);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  mPts.push_back(wxPoint2DDouble(10, 13) + m_position);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <a class="code" href="class_element.html#a103b3cb2670012b2695940b094f63ab3">DrawLine</a>(mPts);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_ind_motor.html#a87666565ae1380993d94e7886e9a1f59"> 35</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_ind_motor.html#a87666565ae1380993d94e7886e9a1f59">IndMotor::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit induction motor"</span>));</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_element.html#a35f55626a29d5256f8dc07cf92655e64">GeneralMenuItens</a>(menu);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_ind_motor.html#add48c9a03d197a6279ca2e33af0fe286"> 42</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_ind_motor.html#add48c9a03d197a6279ca2e33af0fe286">IndMotor::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_ind_motor_form.html">IndMotorForm</a>* indMotorForm = <span class="keyword">new</span> <a class="code" href="class_ind_motor_form.html">IndMotorForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span>(indMotorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  indMotorForm->Destroy();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  indMotorForm->Destroy();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> IndMotor::GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  data.activePower = data.activePower / systemPowerBase;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  data.activePower = (data.activePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  data.activePower = (data.activePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  data.reactivePower = data.reactivePower / systemPowerBase;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="class_ind_motor.html#ace3ce34ba500ec33bf37b9216ad636a8"> 93</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_ind_motor.html#ace3ce34ba500ec33bf37b9216ad636a8">IndMotor::GetCopy</a>()</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* copy = <span class="keyword">new</span> <a class="code" href="class_ind_motor.html">IndMotor</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="class_ind_motor.html#ae785c4055db23b4ae1ef03f00468a532"> 100</a></span> wxString <a class="code" href="class_ind_motor.html#ae785c4055db23b4ae1ef03f00468a532">IndMotor::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword"></span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">double</span> activePower = m_electricalData.activePower;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  tipText += _(<span class="stringliteral">"\nP = "</span>) + wxString::FromDouble(activePower, 5);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">switch</span>(m_electricalData.activePowerUnit) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  tipText += _(<span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  tipText += _(<span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  tipText += _(<span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="ttc" id="struct_ind_motor_electrical_data_html"><div class="ttname"><a href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00025">IndMotor.h:25</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_ind_motor_form_8h.html">IndMotorForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_ind_motor_8h.html">IndMotor.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> IndMotor::IndMotor() : <a class="code" href="class_machines.html">Machines</a>() {}</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> IndMotor::IndMotor(wxString name) : <a class="code" href="class_machines.html">Machines</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> IndMotor::~IndMotor() {}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keywordtype">void</span> IndMotor::DrawSymbol()<span class="keyword"> const</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword"></span>{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  std::vector<wxPoint2DDouble> mPts;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  mPts.push_back(wxPoint2DDouble(-10, 13) + m_position);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  mPts.push_back(wxPoint2DDouble(-10, -13) + m_position);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  mPts.push_back(wxPoint2DDouble(0, 2) + m_position);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  mPts.push_back(wxPoint2DDouble(10, -13) + m_position);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  mPts.push_back(wxPoint2DDouble(10, 13) + m_position);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <a class="code" href="class_element.html#a103b3cb2670012b2695940b094f63ab3">DrawLine</a>(mPts);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_ind_motor.html#a87666565ae1380993d94e7886e9a1f59"> 35</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_ind_motor.html#a87666565ae1380993d94e7886e9a1f59">IndMotor::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit induction motor"</span>));</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_element.html#a35f55626a29d5256f8dc07cf92655e64">GeneralMenuItens</a>(menu);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_ind_motor.html#add48c9a03d197a6279ca2e33af0fe286"> 42</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_ind_motor.html#add48c9a03d197a6279ca2e33af0fe286">IndMotor::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_ind_motor_form.html">IndMotorForm</a>* indMotorForm = <span class="keyword">new</span> <a class="code" href="class_ind_motor_form.html">IndMotorForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span>(indMotorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  indMotorForm->Destroy();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  indMotorForm->Destroy();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> IndMotor::GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  data.activePower = data.activePower / systemPowerBase;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  data.activePower = (data.activePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  data.activePower = (data.activePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  data.reactivePower = data.reactivePower / systemPowerBase;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="class_ind_motor.html#ace3ce34ba500ec33bf37b9216ad636a8"> 93</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_ind_motor.html#ace3ce34ba500ec33bf37b9216ad636a8">IndMotor::GetCopy</a>()</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* copy = <span class="keyword">new</span> <a class="code" href="class_ind_motor.html">IndMotor</a>();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="class_ind_motor.html#ae785c4055db23b4ae1ef03f00468a532"> 100</a></span> wxString <a class="code" href="class_ind_motor.html#ae785c4055db23b4ae1ef03f00468a532">IndMotor::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keyword"></span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">double</span> activePower = m_electricalData.activePower;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  tipText += _(<span class="stringliteral">"\nP = "</span>) + wxString::FromDouble(activePower, 5);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">switch</span>(m_electricalData.activePowerUnit) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  tipText += _(<span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  tipText += _(<span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  tipText += _(<span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="ttc" id="struct_ind_motor_electrical_data_html"><div class="ttname"><a href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00025">IndMotor.h:25</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_ind_motor_form_8h_html"><div class="ttname"><a href="_ind_motor_form_8h.html">IndMotorForm.h</a></div></div> <div class="ttc" id="class_element_html_a103b3cb2670012b2695940b094f63ab3"><div class="ttname"><a href="class_element.html#a103b3cb2670012b2695940b094f63ab3">Element::DrawLine</a></div><div class="ttdeci">virtual void DrawLine(std::vector< wxPoint2DDouble > points, GLenum mode=GL_LINE_STRIP) const</div><div class="ttdoc">Draw line. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00089">Element.cpp:89</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00052">Element.h:52</a></div></div> @@ -98,12 +98,13 @@ $(document).ready(function(){initNavTree('_ind_motor_8cpp_source.html','');}); <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> <div class="ttc" id="class_element_html_a35f55626a29d5256f8dc07cf92655e64"><div class="ttname"><a href="class_element.html#a35f55626a29d5256f8dc07cf92655e64">Element::GeneralMenuItens</a></div><div class="ttdeci">virtual void GeneralMenuItens(wxMenu &menu)</div><div class="ttdoc">Insert general itens to context menu. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00245">Element.cpp:245</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00035">PowerElement.h:35</a></div></div> +<div class="ttc" id="_ind_motor_8h_html"><div class="ttname"><a href="_ind_motor_8h.html">IndMotor.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> <div class="ttc" id="class_ind_motor_html_ace3ce34ba500ec33bf37b9216ad636a8"><div class="ttname"><a href="class_ind_motor.html#ace3ce34ba500ec33bf37b9216ad636a8">IndMotor::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8cpp_source.html#l00093">IndMotor.cpp:93</a></div></div> -<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00033">IndMotor.h:33</a></div></div> +<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdoc">Induction motor power element. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00040">IndMotor.h:40</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00040">PowerElement.h:40</a></div></div> -<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00026">Machines.h:26</a></div></div> +<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdoc">Abstract class for rotary machines power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00033">Machines.h:33</a></div></div> <div class="ttc" id="class_ind_motor_form_html"><div class="ttname"><a href="class_ind_motor_form.html">IndMotorForm</a></div><div class="ttdoc">Form to edit the induction motor power data. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_form_8h_source.html#l00031">IndMotorForm.h:31</a></div></div> <div class="ttc" id="class_ind_motor_html_add48c9a03d197a6279ca2e33af0fe286"><div class="ttname"><a href="class_ind_motor.html#add48c9a03d197a6279ca2e33af0fe286">IndMotor::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8cpp_source.html#l00042">IndMotor.cpp:42</a></div></div> <div class="ttc" id="class_ind_motor_html_a87666565ae1380993d94e7886e9a1f59"><div class="ttname"><a href="class_ind_motor.html#a87666565ae1380993d94e7886e9a1f59">IndMotor::GetContextMenu</a></div><div class="ttdeci">virtual bool GetContextMenu(wxMenu &menu)</div><div class="ttdoc">Get the element contex menu. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8cpp_source.html#l00035">IndMotor.cpp:35</a></div></div> diff --git a/docs/doxygen/html/_ind_motor_8h.html b/docs/doxygen/html/_ind_motor_8h.html new file mode 100644 index 0000000..eee2bbb --- /dev/null +++ b/docs/doxygen/html/_ind_motor_8h.html @@ -0,0 +1,117 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/IndMotor.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_ind_motor_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">IndMotor.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_machines_8h_source.html">Machines.h</a>"</code><br /> +</div> +<p><a href="_ind_motor_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_ind_motor.html">IndMotor</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Induction motor power element. <a href="class_ind_motor.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_ind_motor_8h.html">IndMotor.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_ind_motor_8h_source.html b/docs/doxygen/html/_ind_motor_8h_source.html index c81f671..cca021d 100644 --- a/docs/doxygen/html/_ind_motor_8h_source.html +++ b/docs/doxygen/html/_ind_motor_8h_source.html @@ -88,20 +88,21 @@ $(document).ready(function(){initNavTree('_ind_motor_8h_source.html','');}); <div class="title">IndMotor.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef INDMOTOR_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define INDMOTOR_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "Machines.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_ind_motor_form.html">IndMotorForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="struct_ind_motor_electrical_data.html"> 25</a></span> <span class="keyword">struct </span><a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString name;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> activePower = 100.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">double</span> reactivePower = 0.0;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> };</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_ind_motor.html"> 33</a></span> <span class="keyword">class </span><a class="code" href="class_ind_motor.html">IndMotor</a> : <span class="keyword">public</span> <a class="code" href="class_machines.html">Machines</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>(wxString name);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  ~<a class="code" href="class_ind_motor.html">IndMotor</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSymbol() <span class="keyword">const</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> GetElectricalData() { <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> m_electricalData;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor">#endif // INDMOTOR_H</span></div><div class="ttc" id="struct_ind_motor_electrical_data_html"><div class="ttname"><a href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00025">IndMotor.h:25</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_ind_motor_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef INDMOTOR_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define INDMOTOR_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_machines_8h.html">Machines.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_ind_motor_form.html">IndMotorForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="struct_ind_motor_electrical_data.html"> 25</a></span> <span class="keyword">struct </span><a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString name;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> activePower = 100.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">double</span> reactivePower = 0.0;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> };</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_ind_motor.html"> 40</a></span> <span class="keyword">class </span><a class="code" href="class_ind_motor.html">IndMotor</a> : <span class="keyword">public</span> <a class="code" href="class_machines.html">Machines</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>(wxString name);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ~<a class="code" href="class_ind_motor.html">IndMotor</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSymbol() <span class="keyword">const</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> GetElectricalData() { <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> m_electricalData;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> };</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#endif // INDMOTOR_H</span></div><div class="ttc" id="_machines_8h_html"><div class="ttname"><a href="_machines_8h.html">Machines.h</a></div></div> +<div class="ttc" id="struct_ind_motor_electrical_data_html"><div class="ttname"><a href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00025">IndMotor.h:25</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00036">PowerElement.h:36</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220cca"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a></div><div class="ttdeci">ElectricalUnit</div><div class="ttdoc">Electrical units. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00028">PowerElement.h:28</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> -<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00033">IndMotor.h:33</a></div></div> -<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00026">Machines.h:26</a></div></div> +<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdoc">Induction motor power element. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00040">IndMotor.h:40</a></div></div> +<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdoc">Abstract class for rotary machines power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00033">Machines.h:33</a></div></div> <div class="ttc" id="class_ind_motor_form_html"><div class="ttname"><a href="class_ind_motor_form.html">IndMotorForm</a></div><div class="ttdoc">Form to edit the induction motor power data. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_form_8h_source.html#l00031">IndMotorForm.h:31</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>IndMotor.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_ind_motor_8h.html">IndMotor.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_ind_motor_form_8cpp_source.html b/docs/doxygen/html/_ind_motor_form_8cpp_source.html index c8007c6..4113377 100644 --- a/docs/doxygen/html/_ind_motor_form_8cpp_source.html +++ b/docs/doxygen/html/_ind_motor_form_8cpp_source.html @@ -88,15 +88,16 @@ $(document).ready(function(){initNavTree('_ind_motor_form_8cpp_source.html',''); <div class="title">IndMotorForm.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_ind_motor_form_8h.html">IndMotorForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "IndMotor.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> IndMotorForm::IndMotorForm(wxWindow* parent, <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor) : <a class="code" href="class_ind_motor_form_base.html">IndMotorFormBase</a>(parent)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_buttonStabButton->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data = indMotor->GetElectricalData();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_textCtrlActivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">IndMotor::StringFromDouble</a>(data.activePower));</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choiceActivePower->SetSelection(0);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_choiceActivePower->SetSelection(1);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_choiceActivePower->SetSelection(2);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_choiceActivePower->SetSelection(3);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">IndMotor::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_choiceReactivePower->SetSelection(0);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_choiceReactivePower->SetSelection(1);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_parent = parent;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_indMotor = indMotor;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> IndMotorForm::~IndMotorForm() {}</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keywordtype">void</span> IndMotorForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keywordtype">void</span> IndMotorForm::OnStabilityButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// TODO: Induction motor stability form</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keywordtype">bool</span> IndMotorForm::ValidateData()</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(!m_indMotor->DoubleFromString(m_parent, m_textCtrlActivePower->GetValue(), data.activePower,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Active power\"."</span>)))</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">switch</span>(m_choiceActivePower->GetSelection()) {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>(!m_indMotor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_indMotor->SetElectricalData(data);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="ttc" id="struct_ind_motor_electrical_data_html"><div class="ttname"><a href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00025">IndMotor.h:25</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_ind_motor_form_8h.html">IndMotorForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_ind_motor_8h.html">IndMotor.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> IndMotorForm::IndMotorForm(wxWindow* parent, <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor) : <a class="code" href="class_ind_motor_form_base.html">IndMotorFormBase</a>(parent)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_buttonStabButton->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data = indMotor->GetElectricalData();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_textCtrlActivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">IndMotor::StringFromDouble</a>(data.activePower));</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choiceActivePower->SetSelection(0);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_choiceActivePower->SetSelection(1);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_choiceActivePower->SetSelection(2);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_choiceActivePower->SetSelection(3);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">IndMotor::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_choiceReactivePower->SetSelection(0);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_choiceReactivePower->SetSelection(1);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_parent = parent;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_indMotor = indMotor;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> IndMotorForm::~IndMotorForm() {}</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keywordtype">void</span> IndMotorForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keywordtype">void</span> IndMotorForm::OnStabilityButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// TODO: Induction motor stability form</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keywordtype">bool</span> IndMotorForm::ValidateData()</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(!m_indMotor->DoubleFromString(m_parent, m_textCtrlActivePower->GetValue(), data.activePower,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Active power\"."</span>)))</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">switch</span>(m_choiceActivePower->GetSelection()) {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>(!m_indMotor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_indMotor->SetElectricalData(data);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="ttc" id="struct_ind_motor_electrical_data_html"><div class="ttname"><a href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00025">IndMotor.h:25</a></div></div> <div class="ttc" id="_ind_motor_form_8h_html"><div class="ttname"><a href="_ind_motor_form_8h.html">IndMotorForm.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00036">PowerElement.h:36</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> <div class="ttc" id="class_ind_motor_form_base_html"><div class="ttname"><a href="class_ind_motor_form_base.html">IndMotorFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00673">ElementForm.h:673</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00035">PowerElement.h:35</a></div></div> +<div class="ttc" id="_ind_motor_8h_html"><div class="ttname"><a href="_ind_motor_8h.html">IndMotor.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> -<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00033">IndMotor.h:33</a></div></div> +<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdoc">Induction motor power element. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00040">IndMotor.h:40</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00040">PowerElement.h:40</a></div></div> <div class="ttc" id="class_element_html_abb2e253ec1e86353cd7160209c96553c"><div class="ttname"><a href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a></div><div class="ttdeci">static wxString StringFromDouble(double value, int minDecimal=1)</div><div class="ttdoc">Convert a double value to string. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00320">Element.cpp:320</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00034">PowerElement.h:34</a></div></div> diff --git a/docs/doxygen/html/_ind_motor_form_8h_source.html b/docs/doxygen/html/_ind_motor_form_8h_source.html index 526fa6a..be88cab 100644 --- a/docs/doxygen/html/_ind_motor_form_8h_source.html +++ b/docs/doxygen/html/_ind_motor_form_8h_source.html @@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('_ind_motor_form_8h_source.html','');}) </div><!--header--> <div class="contents"> <a href="_ind_motor_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef INDMOTORFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define INDMOTORFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">class </span><a class="code" href="class_ind_motor.html">IndMotor</a>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="class_ind_motor_form.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="class_ind_motor_form.html">IndMotorForm</a> : <span class="keyword">public</span> <a class="code" href="class_ind_motor_form_base.html">IndMotorFormBase</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="class_ind_motor_form.html">IndMotorForm</a>(wxWindow* parent, <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_ind_motor_form.html">IndMotorForm</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); };</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStabilityButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* m_indMotor = NULL;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#endif // INDMOTORFORM_H</span></div><div class="ttc" id="class_ind_motor_form_base_html"><div class="ttname"><a href="class_ind_motor_form_base.html">IndMotorFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00673">ElementForm.h:673</a></div></div> -<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00033">IndMotor.h:33</a></div></div> +<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdoc">Induction motor power element. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00040">IndMotor.h:40</a></div></div> <div class="ttc" id="class_ind_motor_form_html"><div class="ttname"><a href="class_ind_motor_form.html">IndMotorForm</a></div><div class="ttdoc">Form to edit the induction motor power data. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_form_8h_source.html#l00031">IndMotorForm.h:31</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_inductor_8cpp_source.html b/docs/doxygen/html/_inductor_8cpp_source.html index 9977b24..ec93e1b 100644 --- a/docs/doxygen/html/_inductor_8cpp_source.html +++ b/docs/doxygen/html/_inductor_8cpp_source.html @@ -88,9 +88,9 @@ $(document).ready(function(){initNavTree('_inductor_8cpp_source.html','');}); <div class="title">Inductor.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_reactive_shunt_element_form_8h.html">ReactiveShuntElementForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "Inductor.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Inductor::Inductor() : <a class="code" href="class_shunt.html">Shunt</a>() {}</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> Inductor::Inductor(wxString name) : <a class="code" href="class_shunt.html">Shunt</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> Inductor::~Inductor() {}</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="class_inductor.html#a4e404c6e15f206fe0f5de06fc19dedf5"> 24</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_inductor.html#a4e404c6e15f206fe0f5de06fc19dedf5">Inductor::AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_position = parentPt + wxPoint2DDouble(0.0, 100.0); <span class="comment">// Shifts the position to the down of the bus.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_width = 20.0;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_height = 70.0;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_rect = wxRect2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y - m_height / 2.0, m_width, m_height);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_pointList.push_back(parentPt);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -m_height / 2.0 - 10.0));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -m_height / 2.0));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_inserted = <span class="keyword">true</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_switchRect.push_back(genRect); <span class="comment">// Push a general rectangle.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  UpdateSwitches();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_inductor.html#a97761292fac4f0da7ae3dc6ca4b4de54"> 55</a></span> <span class="keywordtype">void</span> <a class="code" href="class_inductor.html#a97761292fac4f0da7ae3dc6ca4b4de54">Inductor::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword"></span>{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  elementColour = m_offlineElementColour;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  glPushMatrix();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.0), 10, 45, 270, 30, GL_LINE_STRIP);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 25.0), 10, 45, 315, 30, GL_LINE_STRIP);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 40.0), 10, 90, 315, 30, GL_LINE_STRIP);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 50.0));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  glPopMatrix();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// Draw node selection.</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// Draw Load (layer 2).</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  glLineWidth(1.5);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  DrawSwitches();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  glPushMatrix();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.0), 10, 45, 270, 10, GL_LINE_STRIP);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 25.0), 10, 45, 315, 10, GL_LINE_STRIP);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 40.0), 10, 90, 315, 10, GL_LINE_STRIP);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 50.0));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  glPopMatrix();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="class_inductor.html#a801bb445c01059558902c0eca4d38cdd"> 113</a></span> <span class="keywordtype">void</span> <a class="code" href="class_inductor.html#a801bb445c01059558902c0eca4d38cdd">Inductor::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_angle += rotAngle;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_pointList[2] = RotateAtPosition(m_pointList[2], rotAngle);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_pointList[3] = RotateAtPosition(m_pointList[3], rotAngle);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="class_inductor.html#aa0ae00d91b40307141a8bd3aebf1a0c2"> 125</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_inductor.html#aa0ae00d91b40307141a8bd3aebf1a0c2">Inductor::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit Inductor"</span>));</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="class_inductor.html#ac3ba7de94a328b20ff86e968a6228f60"> 132</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_inductor.html#ac3ba7de94a328b20ff86e968a6228f60">Inductor::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword"></span>{</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  wxPoint2DDouble ptR = RotateAtPosition(position, -m_angle);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="class_inductor.html#a3d331d2a725275a12489401180d4c1d1"> 138</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_inductor.html#a3d331d2a725275a12489401180d4c1d1">Inductor::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RotatedRectanglesIntersects(m_rect, rect, m_angle, 0.0); }</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="class_inductor.html#abfaf28fc70a71f3f85940eef7d1551c9"> 139</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_inductor.html#abfaf28fc70a71f3f85940eef7d1551c9">Inductor::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>* capacitorForm = <span class="keyword">new</span> <a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  capacitorForm->SetTitle(_(<span class="stringliteral">"Inductor"</span>));</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>(capacitorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  capacitorForm->Destroy();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  capacitorForm->Destroy();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> Inductor::GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  data.reactivePower = data.reactivePower / systemPowerBase;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="class_inductor.html#a4241ebd43388ebe88ec5888a15bc22d9"> 174</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_inductor.html#a4241ebd43388ebe88ec5888a15bc22d9">Inductor::GetCopy</a>()</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="class_inductor.html">Inductor</a>* copy = <span class="keyword">new</span> <a class="code" href="class_inductor.html">Inductor</a>();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="class_inductor.html#ac16663899a076f0e84722b27193fe530"> 181</a></span> wxString <a class="code" href="class_inductor.html#ac16663899a076f0e84722b27193fe530">Inductor::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keyword"></span>{</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// TODO: Avoid reactive power calculation.</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">if</span>(!m_online)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  reactivePower = 0.0;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  std::complex<double> v = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  reactivePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_reactive_shunt_element_form_8h.html">ReactiveShuntElementForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_inductor_8h.html">Inductor.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Inductor::Inductor() : <a class="code" href="class_shunt.html">Shunt</a>() {}</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> Inductor::Inductor(wxString name) : <a class="code" href="class_shunt.html">Shunt</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> Inductor::~Inductor() {}</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="class_inductor.html#a4e404c6e15f206fe0f5de06fc19dedf5"> 24</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_inductor.html#a4e404c6e15f206fe0f5de06fc19dedf5">Inductor::AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_position = parentPt + wxPoint2DDouble(0.0, 100.0); <span class="comment">// Shifts the position to the down of the bus.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_width = 20.0;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_height = 70.0;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_rect = wxRect2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y - m_height / 2.0, m_width, m_height);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_pointList.push_back(parentPt);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -m_height / 2.0 - 10.0));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -m_height / 2.0));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_inserted = <span class="keyword">true</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_switchRect.push_back(genRect); <span class="comment">// Push a general rectangle.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  UpdateSwitches();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="class_inductor.html#a97761292fac4f0da7ae3dc6ca4b4de54"> 55</a></span> <span class="keywordtype">void</span> <a class="code" href="class_inductor.html#a97761292fac4f0da7ae3dc6ca4b4de54">Inductor::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword"></span>{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  elementColour = m_offlineElementColour;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  glPushMatrix();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.0), 10, 45, 270, 30, GL_LINE_STRIP);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 25.0), 10, 45, 315, 30, GL_LINE_STRIP);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 40.0), 10, 90, 315, 30, GL_LINE_STRIP);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 50.0));</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  glPopMatrix();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// Draw node selection.</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// Draw Load (layer 2).</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  glLineWidth(1.5);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  DrawSwitches();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  glPushMatrix();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.0), 10, 45, 270, 10, GL_LINE_STRIP);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 25.0), 10, 45, 315, 10, GL_LINE_STRIP);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 40.0), 10, 90, 315, 10, GL_LINE_STRIP);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 50.0));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  glPopMatrix();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="class_inductor.html#a801bb445c01059558902c0eca4d38cdd"> 113</a></span> <span class="keywordtype">void</span> <a class="code" href="class_inductor.html#a801bb445c01059558902c0eca4d38cdd">Inductor::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_angle += rotAngle;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_pointList[2] = RotateAtPosition(m_pointList[2], rotAngle);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_pointList[3] = RotateAtPosition(m_pointList[3], rotAngle);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="class_inductor.html#aa0ae00d91b40307141a8bd3aebf1a0c2"> 125</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_inductor.html#aa0ae00d91b40307141a8bd3aebf1a0c2">Inductor::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit Inductor"</span>));</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="class_inductor.html#ac3ba7de94a328b20ff86e968a6228f60"> 132</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_inductor.html#ac3ba7de94a328b20ff86e968a6228f60">Inductor::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword"></span>{</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  wxPoint2DDouble ptR = RotateAtPosition(position, -m_angle);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="class_inductor.html#a3d331d2a725275a12489401180d4c1d1"> 138</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_inductor.html#a3d331d2a725275a12489401180d4c1d1">Inductor::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RotatedRectanglesIntersects(m_rect, rect, m_angle, 0.0); }</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="class_inductor.html#abfaf28fc70a71f3f85940eef7d1551c9"> 139</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_inductor.html#abfaf28fc70a71f3f85940eef7d1551c9">Inductor::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>* capacitorForm = <span class="keyword">new</span> <a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  capacitorForm->SetTitle(_(<span class="stringliteral">"Inductor"</span>));</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>(capacitorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  capacitorForm->Destroy();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  capacitorForm->Destroy();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> Inductor::GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  data.reactivePower = data.reactivePower / systemPowerBase;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="class_inductor.html#a4241ebd43388ebe88ec5888a15bc22d9"> 174</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_inductor.html#a4241ebd43388ebe88ec5888a15bc22d9">Inductor::GetCopy</a>()</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="class_inductor.html">Inductor</a>* copy = <span class="keyword">new</span> <a class="code" href="class_inductor.html">Inductor</a>();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="class_inductor.html#ac16663899a076f0e84722b27193fe530"> 181</a></span> wxString <a class="code" href="class_inductor.html#ac16663899a076f0e84722b27193fe530">Inductor::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keyword"></span>{</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// TODO: Avoid reactive power calculation.</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">if</span>(!m_online)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  reactivePower = 0.0;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  std::complex<double> v = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  reactivePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> <div class="ttc" id="class_inductor_html_abfaf28fc70a71f3f85940eef7d1551c9"><div class="ttname"><a href="class_inductor.html#abfaf28fc70a71f3f85940eef7d1551c9">Inductor::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8cpp_source.html#l00139">Inductor.cpp:139</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00052">Element.h:52</a></div></div> <div class="ttc" id="class_inductor_html_ac16663899a076f0e84722b27193fe530"><div class="ttname"><a href="class_inductor.html#ac16663899a076f0e84722b27193fe530">Inductor::GetTipText</a></div><div class="ttdeci">virtual wxString GetTipText() const</div><div class="ttdoc">Get the tip text. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8cpp_source.html#l00181">Inductor.cpp:181</a></div></div> <div class="ttc" id="_reactive_shunt_element_form_8h_html"><div class="ttname"><a href="_reactive_shunt_element_form_8h.html">ReactiveShuntElementForm.h</a></div></div> @@ -102,17 +102,18 @@ $(document).ready(function(){initNavTree('_inductor_8cpp_source.html','');}); <div class="ttc" id="class_inductor_html_aa0ae00d91b40307141a8bd3aebf1a0c2"><div class="ttname"><a href="class_inductor.html#aa0ae00d91b40307141a8bd3aebf1a0c2">Inductor::GetContextMenu</a></div><div class="ttdeci">virtual bool GetContextMenu(wxMenu &menu)</div><div class="ttdoc">Get the element contex menu. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8cpp_source.html#l00125">Inductor.cpp:125</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> <div class="ttc" id="class_inductor_html_a97761292fac4f0da7ae3dc6ca4b4de54"><div class="ttname"><a href="class_inductor.html#a97761292fac4f0da7ae3dc6ca4b4de54">Inductor::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8cpp_source.html#l00055">Inductor.cpp:55</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="class_inductor_html_a4e404c6e15f206fe0f5de06fc19dedf5"><div class="ttname"><a href="class_inductor.html#a4e404c6e15f206fe0f5de06fc19dedf5">Inductor::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8cpp_source.html#l00024">Inductor.cpp:24</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> <div class="ttc" id="class_element_html_ac38d6707d08cb5c057032aa94b511a62"><div class="ttname"><a href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">Element::AddChild</a></div><div class="ttdeci">virtual void AddChild(Element *child)</div><div class="ttdoc">Add a child to the child list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00353">Element.cpp:353</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00040">PowerElement.h:40</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> +<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdoc">Class to manage color of OpenGL. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> +<div class="ttc" id="_inductor_8h_html"><div class="ttname"><a href="_inductor_8h.html">Inductor.h</a></div></div> <div class="ttc" id="class_inductor_html_a3d331d2a725275a12489401180d4c1d1"><div class="ttname"><a href="class_inductor.html#a3d331d2a725275a12489401180d4c1d1">Inductor::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8cpp_source.html#l00138">Inductor.cpp:138</a></div></div> <div class="ttc" id="class_element_html_a536ad18a847dcc979c984b3cb287f238"><div class="ttname"><a href="class_element.html#a536ad18a847dcc979c984b3cb287f238">Element::GetPosition</a></div><div class="ttdeci">wxPoint2DDouble GetPosition() const</div><div class="ttdoc">Get the element position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00187">Element.h:187</a></div></div> -<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00031">Inductor.h:31</a></div></div> -<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00024">Shunt.h:24</a></div></div> +<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdoc">Inductor shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00038">Inductor.h:38</a></div></div> +<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdoc">Abstract class for shunt power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00031">Shunt.h:31</a></div></div> <div class="ttc" id="class_reactive_shunt_element_form_html"><div class="ttname"><a href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a></div><div class="ttdoc">Form to edit the reactive shunt element power data. </div><div class="ttdef"><b>Definition:</b> <a href="_reactive_shunt_element_form_8h_source.html#l00034">ReactiveShuntElementForm.h:34</a></div></div> <div class="ttc" id="class_open_g_l_colour_html_a12119e58ae1bc7d6888224252695c066"><div class="ttname"><a href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">OpenGLColour::GetRGBA</a></div><div class="ttdeci">const GLdouble * GetRGBA() const</div><div class="ttdoc">Get colour in RGBA. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00101">Element.h:101</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_inductor_8h.html b/docs/doxygen/html/_inductor_8h.html new file mode 100644 index 0000000..6328d39 --- /dev/null +++ b/docs/doxygen/html/_inductor_8h.html @@ -0,0 +1,117 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/Inductor.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_inductor_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">Inductor.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_shunt_8h_source.html">Shunt.h</a>"</code><br /> +</div> +<p><a href="_inductor_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_inductor_electrical_data.html">InductorElectricalData</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_inductor.html">Inductor</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="class_inductor.html" title="Inductor shunt power element. ">Inductor</a> shunt power element. <a href="class_inductor.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_inductor_8h.html">Inductor.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_inductor_8h_source.html b/docs/doxygen/html/_inductor_8h_source.html index 6c82c0b..d663b20 100644 --- a/docs/doxygen/html/_inductor_8h_source.html +++ b/docs/doxygen/html/_inductor_8h_source.html @@ -88,19 +88,20 @@ $(document).ready(function(){initNavTree('_inductor_8h_source.html','');}); <div class="title">Inductor.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef INDUCTOR_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define INDUCTOR_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "Shunt.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="struct_inductor_electrical_data.html"> 25</a></span> <span class="keyword">struct </span><a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString name;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> reactivePower = 100.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> };</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="class_inductor.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="class_inductor.html">Inductor</a> : <span class="keyword">public</span> <a class="code" href="class_shunt.html">Shunt</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="class_inductor.html">Inductor</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_inductor.html">Inductor</a>(wxString name);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ~<a class="code" href="class_inductor.html">Inductor</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> AddParent(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Intersects(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Rotate(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> GetElectricalData() { <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> m_electricalData;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#endif // INDUCTOR_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_inductor_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef INDUCTOR_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define INDUCTOR_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_shunt_8h.html">Shunt.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="struct_inductor_electrical_data.html"> 25</a></span> <span class="keyword">struct </span><a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString name;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> reactivePower = 100.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> };</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_inductor.html"> 38</a></span> <span class="keyword">class </span><a class="code" href="class_inductor.html">Inductor</a> : <span class="keyword">public</span> <a class="code" href="class_shunt.html">Shunt</a></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_inductor.html">Inductor</a>();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_inductor.html">Inductor</a>(wxString name);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  ~<a class="code" href="class_inductor.html">Inductor</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> AddParent(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Intersects(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Rotate(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> GetElectricalData() { <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> m_electricalData;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> };</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#endif // INDUCTOR_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="_shunt_8h_html"><div class="ttname"><a href="_shunt_8h.html">Shunt.h</a></div></div> <div class="ttc" id="struct_inductor_electrical_data_html"><div class="ttname"><a href="struct_inductor_electrical_data.html">InductorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00025">Inductor.h:25</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220cca"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a></div><div class="ttdeci">ElectricalUnit</div><div class="ttdoc">Electrical units. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00028">PowerElement.h:28</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> -<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00031">Inductor.h:31</a></div></div> -<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00024">Shunt.h:24</a></div></div> +<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdoc">Inductor shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00038">Inductor.h:38</a></div></div> +<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdoc">Abstract class for shunt power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00031">Shunt.h:31</a></div></div> <div class="ttc" id="class_reactive_shunt_element_form_html"><div class="ttname"><a href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a></div><div class="ttdoc">Form to edit the reactive shunt element power data. </div><div class="ttdef"><b>Definition:</b> <a href="_reactive_shunt_element_form_8h_source.html#l00034">ReactiveShuntElementForm.h:34</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>Inductor.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_inductor_8h.html">Inductor.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_limiter_8cpp_source.html b/docs/doxygen/html/_limiter_8cpp_source.html index 2edb03e..39c92ff 100644 --- a/docs/doxygen/html/_limiter_8cpp_source.html +++ b/docs/doxygen/html/_limiter_8cpp_source.html @@ -90,7 +90,7 @@ $(document).ready(function(){initNavTree('_limiter_8cpp_source.html','');}); <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_limiter_8h.html">Limiter.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_limiter_form_8h.html">LimiterForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Limiter::Limiter(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_width = m_height = 36.0;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <a class="code" href="class_node.html">Node</a>* nodeIn = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-18, 0), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  nodeIn->StartMove(m_position);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <a class="code" href="class_node.html">Node</a>* nodeOut = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(18, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_nodeList.push_back(nodeIn);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> Limiter::~Limiter() {}</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_limiter.html#a2e2960936ebfcc6589181b7948fba242"> 34</a></span> <span class="keywordtype">void</span> <a class="code" href="class_limiter.html#a2e2960936ebfcc6589181b7948fba242">Limiter::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword"></span>{</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  glLineWidth(1.0);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  DrawRectangle(m_position, m_width + borderSize, m_height + borderSize);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Plot symbol.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  glLineWidth(2.0);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::vector<wxPoint2DDouble> limSymbol;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  limSymbol.push_back(m_position + wxPoint2DDouble(10, -10));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  limSymbol.push_back(m_position + wxPoint2DDouble(2, -10));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  limSymbol.push_back(m_position + wxPoint2DDouble(-2, 10));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  limSymbol.push_back(m_position + wxPoint2DDouble(-10, 10));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  glColor4d(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  DrawLine(limSymbol);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  DrawNodes();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="class_limiter.html#a31fd227e010e7d39f1435a70709b14e3"> 61</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_limiter.html#a31fd227e010e7d39f1435a70709b14e3">Limiter::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_limiter_form.html">LimiterForm</a>* limiter = <span class="keyword">new</span> <a class="code" href="class_limiter_form.html">LimiterForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">if</span>(limiter->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  limiter->Destroy();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  limiter->Destroy();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="class_limiter.html#ab9c3aa47fd2fd4903be2dd600f658d25"> 72</a></span> <span class="keywordtype">void</span> <a class="code" href="class_limiter.html#ab9c3aa47fd2fd4903be2dd600f658d25">Limiter::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_angle += 90.0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_angle -= 90.0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_angle = 0.0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_angle = 270.0;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  UpdatePoints();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keywordtype">void</span> Limiter::UpdatePoints()</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -18));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -18));</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keywordtype">bool</span> Limiter::Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_output = input;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">if</span>(m_output > m_upLimit)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_output = m_upLimit;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_output < m_lowLimit)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  m_output = m_lowLimit;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="class_limiter.html#a6071e2308baa7b42f189f09fd1878245"> 119</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_limiter.html#a6071e2308baa7b42f189f09fd1878245">Limiter::GetCopy</a>()</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="class_limiter.html">Limiter</a>* copy = <span class="keyword">new</span> <a class="code" href="class_limiter.html">Limiter</a>(m_elementID);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> }</div><div class="ttc" id="class_limiter_html_a2e2960936ebfcc6589181b7948fba242"><div class="ttname"><a href="class_limiter.html#a2e2960936ebfcc6589181b7948fba242">Limiter::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8cpp_source.html#l00034">Limiter.cpp:34</a></div></div> <div class="ttc" id="class_limiter_html_a6071e2308baa7b42f189f09fd1878245"><div class="ttname"><a href="class_limiter.html#a6071e2308baa7b42f189f09fd1878245">Limiter::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8cpp_source.html#l00119">Limiter.cpp:119</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> <div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdoc">Limits the input value by superior and inferior values. </div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00032">Limiter.h:32</a></div></div> <div class="ttc" id="class_limiter_form_html"><div class="ttname"><a href="class_limiter_form.html">LimiterForm</a></div><div class="ttdoc">Form to edit the limit control data. </div><div class="ttdef"><b>Definition:</b> <a href="_limiter_form_8h_source.html#l00031">LimiterForm.h:31</a></div></div> diff --git a/docs/doxygen/html/_limiter_8h_source.html b/docs/doxygen/html/_limiter_8h_source.html index 4373c00..5d47955 100644 --- a/docs/doxygen/html/_limiter_8h_source.html +++ b/docs/doxygen/html/_limiter_8h_source.html @@ -90,7 +90,7 @@ $(document).ready(function(){initNavTree('_limiter_8h_source.html','');}); <div class="contents"> <a href="_limiter_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef LIMITER_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define LIMITER_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_limiter_form.html">LimiterForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_limiter.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_limiter.html">Limiter</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_limiter.html">Limiter</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ~<a class="code" href="class_limiter.html">Limiter</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_limiter.html#a2e2960936ebfcc6589181b7948fba242">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_limiter.html#ac6506d59da4ea682d9e556564ec3ad11"> 39</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_limiter.html#ac6506d59da4ea682d9e556564ec3ad11">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_limiter.html#ac9c1858dfc3b4d30b2eca0c4767a9f0e"> 40</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_limiter.html#ac9c1858dfc3b4d30b2eca0c4767a9f0e">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_limiter.html#a31fd227e010e7d39f1435a70709b14e3">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_limiter.html#ab9c3aa47fd2fd4903be2dd600f658d25">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> GetUpLimit()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_upLimit; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> GetLowLimit()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_lowLimit; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">void</span> SetUpLimit(<span class="keywordtype">double</span> upLimit) { m_upLimit = upLimit; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">void</span> SetLowLimit(<span class="keywordtype">double</span> lowLimit) { m_lowLimit = lowLimit; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_limiter.html#a6071e2308baa7b42f189f09fd1878245">GetCopy</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">double</span> m_upLimit = 5.0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> m_lowLimit = -5.0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor">#endif // LIMITER_H</span></div><div class="ttc" id="class_limiter_html_a2e2960936ebfcc6589181b7948fba242"><div class="ttname"><a href="class_limiter.html#a2e2960936ebfcc6589181b7948fba242">Limiter::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8cpp_source.html#l00034">Limiter.cpp:34</a></div></div> <div class="ttc" id="class_limiter_html_a6071e2308baa7b42f189f09fd1878245"><div class="ttname"><a href="class_limiter.html#a6071e2308baa7b42f189f09fd1878245">Limiter::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8cpp_source.html#l00119">Limiter.cpp:119</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_limiter_html"><div class="ttname"><a href="class_limiter.html">Limiter</a></div><div class="ttdoc">Limits the input value by superior and inferior values. </div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00032">Limiter.h:32</a></div></div> <div class="ttc" id="class_limiter_html_ac6506d59da4ea682d9e556564ec3ad11"><div class="ttname"><a href="class_limiter.html#ac6506d59da4ea682d9e556564ec3ad11">Limiter::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_limiter_8h_source.html#l00039">Limiter.h:39</a></div></div> <div class="ttc" id="class_limiter_form_html"><div class="ttname"><a href="class_limiter_form.html">LimiterForm</a></div><div class="ttdoc">Form to edit the limit control data. </div><div class="ttdef"><b>Definition:</b> <a href="_limiter_form_8h_source.html#l00031">LimiterForm.h:31</a></div></div> diff --git a/docs/doxygen/html/_line_8cpp_source.html b/docs/doxygen/html/_line_8cpp_source.html index 94a9fdd..aace7c2 100644 --- a/docs/doxygen/html/_line_8cpp_source.html +++ b/docs/doxygen/html/_line_8cpp_source.html @@ -88,8 +88,8 @@ $(document).ready(function(){initNavTree('_line_8cpp_source.html','');}); <div class="title">Line.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "Line.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> Line::Line() : <a class="code" href="class_branch.html">Branch</a>()</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 3; j++) {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  }</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> Line::Line(wxString name) : <a class="code" href="class_branch.html">Branch</a>()</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 3; j++) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_electricalData.name = name;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> Line::~Line() {}</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_line.html#a05eb3761f198a058045f85d6e685ca97"> 39</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#a05eb3761f198a058045f85d6e685ca97">Line::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword"></span>{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span>(PointToLineDistance(position) < 5.0) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="class_line.html#a297e12aa8ff0be5d344e245732487bdd"> 47</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#a297e12aa8ff0be5d344e245732487bdd">Line::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword"></span>{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  elementColour = m_offlineElementColour;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  std::vector<wxPoint2DDouble> pointList = m_pointList;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span>(!m_inserted && pointList.size() > 0) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  wxPoint2DDouble secondPoint = m_position;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span>(pointList.size() > 2) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  secondPoint = pointList[2];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  pointList[1] = GetSwitchPoint(m_parentList[0], pointList[0], secondPoint);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  pointList.push_back(m_position);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Line selected (Layer 1).</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  DrawLine(pointList);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Draw nodes selection.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>(pointList.size() > 0) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  DrawCircle(pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  DrawCircle(pointList[pointList.size() - 1], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Draw line (Layer 2)</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  glLineWidth(1.5);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  DrawLine(pointList);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  DrawSwitches();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  DrawPowerFlowPts();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Draw nodes.</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">if</span>(pointList.size() > 0) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  DrawCircle(pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  DrawCircle(pointList[pointList.size() - 1], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// Draw pickboxes (Layer 3).</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(m_showPickbox) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  glPushMatrix();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  glLoadIdentity();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  DrawPickbox(WorldToScreen(m_pointList[i], translation, scale));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  glPopMatrix();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="class_line.html#a3eabf6de2af4ee71f72ce4f091c69978"> 116</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#a3eabf6de2af4ee71f72ce4f091c69978">Line::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(!m_parentList[0]) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span>(!m_parentList[1]) {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span>(!m_parentList[0] && !m_parentList[1]) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="class_line.html#a26c69f7f703dca718edc28d5093934a3"> 136</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#a26c69f7f703dca718edc28d5093934a3">Line::AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// First bus.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(m_parentList.size() == 0) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_position = position;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_pointList.push_back(parentPt); <span class="comment">// First point</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  m_switchRect.push_back(genRect);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  UpdateSwitches();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="class_bus.html">Bus</a>* parentBus = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(parent);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_electricalData.nominalVoltage = parentBus->GetElectricalData().nominalVoltage;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_electricalData.nominalVoltageUnit = parentBus->GetElectricalData().nominalVoltageUnit;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// Second bus.</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent != m_parentList[0]) {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="class_bus.html">Bus</a>* parentBus = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(parent);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span>(m_electricalData.nominalVoltage != parentBus->GetElectricalData().nominalVoltage ||</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_electricalData.nominalVoltageUnit != parentBus->GetElectricalData().nominalVoltageUnit) {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  wxMessageDialog msgDialog(NULL, _(<span class="stringliteral">"Unable to connect two buses with different nominal voltages.\n"</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="stringliteral">"Use a transformer or edit the bus properties."</span>),</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// Set first switch point.</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  wxPoint2DDouble secondPoint = parentPt;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span>(m_pointList.size() > 2) {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  secondPoint = m_pointList[2];</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], secondPoint);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// Set the second switch point.</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_pointList[m_pointList.size() - 1]));</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  m_pointList.push_back(parentPt); <span class="comment">// Last point.</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  m_switchRect.push_back(genRect);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  UpdateSwitches();</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  m_inserted = <span class="keyword">true</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="class_line.html#a125581fc6d21c83565b902751af331dc"> 203</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#a125581fc6d21c83565b902751af331dc">Line::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keyword"></span>{</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_pointList.begin(); it != m_pointList.end(); ++it) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span>(rect.Contains(*it)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> }</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="class_line.html#afa67498961416e645e0aa5358959ef1d"> 210</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#afa67498961416e645e0aa5358959ef1d">Line::MovePickbox</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a>) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span>(m_activePickboxID == i) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> }</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="class_line.html#acac760d9d67d9c4d007e03592d0e96b4"> 222</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#acac760d9d67d9c4d007e03592d0e96b4">Line::PickboxContains</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  wxRect2DDouble rect(m_pointList[i].m_x - 5.0, m_pointList[i].m_y - 5.0, 10.0, 10.0);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span>(rect.Contains(position)) {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_activePickboxID = i;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="class_line.html#a046a7b2ebff50f237f73dbc182f7ff6f"> 234</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#a046a7b2ebff50f237f73dbc182f7ff6f">Line::AddPoint</a>(wxPoint2DDouble point)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span>(m_parentList.size() != 0) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_pointList.push_back(point);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="class_line.html#abb812387508a9971570bfa1d38e41041"> 241</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#abb812387508a9971570bfa1d38e41041">Line::StartMove</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  m_moveStartPt = position;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  m_movePts = m_pointList;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="class_line.html#ac8be7d7136d86830c262280f51b79ea4"> 247</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#ac8be7d7136d86830c262280f51b79ea4">Line::MoveNode</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="comment">// First bus.</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// Second bus.</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">// If the line is selected, move all the points, except the switches and buses points.</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 1; i++) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="comment">// If parent is setted to NULL for the firts time, remove the parent child</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span>(m_parentList[1]) {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  m_parentList[1]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  m_parentList[1] = NULL;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// Recalculate switches positions</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="class_line.html#a978de0ff06b6f57401ade84045e1a55f"> 289</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#a978de0ff06b6f57401ade84045e1a55f">Line::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  wxFileName exeFileName(wxStandardPaths::Get().GetExecutablePath());</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  wxString exePath = exeFileName.GetPath();</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit line"</span>));</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a>) {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  wxMenuItem* addNodeItem = <span class="keyword">new</span> wxMenuItem(&menu, <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049af05f38a3b3fea5d6da036dce48e9d960">ID_LINE_ADD_NODE</a>, _(<span class="stringliteral">"Insert node"</span>));</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  addNodeItem->SetBitmap(wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\menu\\addNode16.png"</span>));</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  menu.Append(addNodeItem);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  wxMenuItem* addNodeItem = <span class="keyword">new</span> wxMenuItem(&menu, <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a1a8f8c62fc201993f6a605ff06314803">ID_LINE_REMOVE_NODE</a>, _(<span class="stringliteral">"Remove node"</span>));</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  addNodeItem->SetBitmap(wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\menu\\removeNode16.png"</span>));</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  menu.Append(addNodeItem);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  wxMenuItem* deleteItem = <span class="keyword">new</span> wxMenuItem(&menu, <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a80c989d88bc686137e96564dfad6166a">ID_DELETE</a>, _(<span class="stringliteral">"Delete"</span>));</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  deleteItem->SetBitmap(wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\menu\\delete16.png"</span>));</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  menu.Append(deleteItem);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="keywordtype">void</span> Line::RemoveNode(wxPoint2DDouble point)</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">if</span>(PickboxContains(point)) {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">if</span>(m_activePickboxID == i) {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  m_pointList.erase(m_pointList.begin() + i);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="keywordtype">void</span> Line::AddNode(wxPoint2DDouble point)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordtype">int</span> segmentNumber = 0;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  PointToLineDistance(point, &segmentNumber);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">if</span>(segmentNumber > 0 && segmentNumber < (<span class="keywordtype">int</span>)m_pointList.size() - 2) {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  m_pointList.insert(m_pointList.begin() + segmentNumber + 1, point);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="class_line.html#aa146d6b0c7f3b74204f2c88dcbd7f4b0"> 335</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#aa146d6b0c7f3b74204f2c88dcbd7f4b0">Line::CalculateBoundaries</a>(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom)<span class="keyword"> const</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="keyword"></span>{</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">if</span>(m_pointList.size() > 0) {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="comment">// Check points list boundaries.</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  leftUp = m_pointList[0];</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  rightBottom = m_pointList[0];</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < (int)m_pointList.size(); i++) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">if</span>(m_pointList[i].m_x < leftUp.m_x) leftUp.m_x = m_pointList[i].m_x;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">if</span>(m_pointList[i].m_y < leftUp.m_y) leftUp.m_y = m_pointList[i].m_y;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">if</span>(m_pointList[i].m_x > rightBottom.m_x) rightBottom.m_x = m_pointList[i].m_x;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">if</span>(m_pointList[i].m_y > rightBottom.m_y) rightBottom.m_y = m_pointList[i].m_y;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="class_line.html#a24c6a659148f063c78e080a18f4517a1"> 350</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#a24c6a659148f063c78e080a18f4517a1">Line::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <a class="code" href="class_line_form.html">LineForm</a>* lineForm = <span class="keyword">new</span> <a class="code" href="class_line_form.html">LineForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">if</span>(lineForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  lineForm->Destroy();</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  lineForm->Destroy();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="class_line.html#a1f3ef94716c52a357ecbcbdf00b0e072"> 361</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#a1f3ef94716c52a357ecbcbdf00b0e072">Line::SetNominalVoltage</a>(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">if</span>(nominalVoltage.size() > 0) {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  m_electricalData.nominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  m_electricalData.nominalVoltageUnit = nominalVoltageUnit[0];</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="class_line.html#a6d35082da4d30bd432b73b72dd86fadb"> 369</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#a6d35082da4d30bd432b73b72dd86fadb">Line::SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1 && parent == m_parentList[0]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2 && parent == m_parentList[1]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">if</span>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  wxRect2DDouble nodeRect(0, 0, 0, 0);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  nodeRect = wxRect2DDouble(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="comment">// If the line has no parents set the new rated voltage, otherwise check if it's not connecting</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="comment">// two different voltages buses</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="class_bus.html">Bus</a>* parentBus = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(parent);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">if</span>(!m_parentList[0] && !m_parentList[1]) {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  m_electricalData.nominalVoltage = parentBus->GetElectricalData().nominalVoltage;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  m_electricalData.nominalVoltageUnit = parentBus->GetElectricalData().nominalVoltageUnit;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_electricalData.nominalVoltage != parentBus->GetElectricalData().nominalVoltage ||</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  m_electricalData.nominalVoltageUnit != parentBus->GetElectricalData().nominalVoltageUnit) {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  wxMessageDialog msgDialog(NULL, _(<span class="stringliteral">"Unable to connect two buses with different nominal voltages.\n"</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="stringliteral">"Use a transformer or edit the bus properties."</span>),</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="comment">// Check if the user is trying to connect the same bus.</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">if</span>(m_parentList[1] == parent) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  m_parentList[0] = parent;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="comment">// Centralize the node on bus.</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  wxPoint2DDouble parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  m_pointList[0], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  m_pointList[0] = parentPt;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">if</span>(m_parentList[0] == parent) {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  m_parentList[1] = parent;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[m_pointList.size() - 1], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  m_pointList[m_pointList.size() - 1] = parentPt;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) m_parentList[0] = NULL;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) m_parentList[1] = NULL;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00449"></a><span class="lineno"><a class="line" href="class_line.html#a400c8d0397ecdfe6c0a8380ee6bc7e1e"> 449</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#a400c8d0397ecdfe6c0a8380ee6bc7e1e">Line::SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection)</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  m_pfDirection = pfDirection;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="keywordtype">void</span> Line::UpdatePowerFlowArrowsPosition()</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  std::vector<wxPoint2DDouble> edges;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">switch</span>(m_pfDirection) {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>: {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  m_powerFlowArrow.clear();</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523">PF_BUS1_TO_BUS2</a>: {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < (int)m_pointList.size() - 1; i++) {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  edges.push_back(m_pointList[i]);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095">PF_BUS2_TO_BUS1</a>: {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = (<span class="keywordtype">int</span>)m_pointList.size() - 2; i > 0; i--) {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  edges.push_back(m_pointList[i]);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  CalculatePowerFlowPts(edges);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"><a class="line" href="class_line.html#ab73d74778b5aa9807d21f156d15fadf7"> 478</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#ab73d74778b5aa9807d21f156d15fadf7">Line::RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  m_pointList[0] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], rotAngle);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  m_pointList[m_pointList.size() - 1] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[m_pointList.size() - 1], rotAngle);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> </div><div class="line"><a name="l00492"></a><span class="lineno"><a class="line" href="class_line.html#af9a931bdb7e0693cacae010a19b744e6"> 492</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#af9a931bdb7e0693cacae010a19b744e6">Line::SetPointList</a>(std::vector<wxPoint2DDouble> pointList)</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  m_pointList = pointList;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> </div><div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="class_line.html#afc4916268d2a32014e4ab0f8308165a1"> 499</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_line.html#afc4916268d2a32014e4ab0f8308165a1">Line::GetCopy</a>()</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <a class="code" href="class_line.html">Line</a>* copy = <span class="keyword">new</span> <a class="code" href="class_line.html">Line</a>();</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="class_line.html#a51e7bff578cd280464a70200fc323efc"> 506</a></span> wxString <a class="code" href="class_line.html#a51e7bff578cd280464a70200fc323efc">Line::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="keyword"></span>{</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordtype">int</span> busNumber[2];</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  busNumber[0] = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[0])->GetElectricalData().number + 1;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  busNumber[1] = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[1])->GetElectricalData().number + 1;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> </div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  tipText += _(<span class="stringliteral">"\nP"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[0], busNumber[1]) +</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  wxString::FromDouble(m_electricalData.powerFlow[0].real(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  tipText += _(<span class="stringliteral">"\nQ"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[0], busNumber[1]) +</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  wxString::FromDouble(m_electricalData.powerFlow[0].imag(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  tipText += _(<span class="stringliteral">"\nP"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[1], busNumber[0]) +</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  wxString::FromDouble(m_electricalData.powerFlow[1].real(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  tipText += _(<span class="stringliteral">"\nQ"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[1], busNumber[0]) +</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  wxString::FromDouble(m_electricalData.powerFlow[1].imag(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> }</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> </div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> Line::GetPUElectricalData(<span class="keywordtype">double</span> systemBasePower)</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> {</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordtype">double</span> lineBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordtype">double</span> baseVoltage = GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordtype">double</span> systemBaseImpedance = (baseVoltage * baseVoltage) / systemBasePower;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordtype">double</span> lineBaseImpedance = (baseVoltage * baseVoltage) / lineBasePower;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> </div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="comment">// Resistance</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordtype">double</span> r = data.resistance;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">if</span>(data.resistanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>) r *= data.lineSize;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">if</span>(data.resistanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">if</span>(data.useLinePower) data.resistance = (r * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  data.resistance = r / systemBaseImpedance;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="comment">// Inductive reactance</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordtype">double</span> x = data.indReactance;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">if</span>(data.indReactanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>) x *= data.lineSize;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">if</span>(data.indReactanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">if</span>(data.useLinePower) data.indReactance = (x * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  data.indReactance = x / systemBaseImpedance;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> </div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="comment">// Capacitive susceptance</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordtype">double</span> b = data.capSusceptance;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">if</span>(data.capSusceptanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>) b *= data.lineSize;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">if</span>(data.capSusceptanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">if</span>(data.useLinePower) data.capSusceptance = (b * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  data.capSusceptance = b / systemBaseImpedance;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  }</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  data.capSusceptanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="comment">// Zero seq. resistance</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordtype">double</span> r0 = data.zeroResistance;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">if</span>(data.useLinePower) data.zeroResistance = (r0 * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="comment">// Zero seq. ind. reactance</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordtype">double</span> x0 = data.zeroIndReactance;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">if</span>(data.useLinePower) data.zeroIndReactance = (x0 * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> </div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="comment">// Zero seq. cap. susceptance</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordtype">double</span> b0 = data.zeroCapSusceptance;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">if</span>(data.useLinePower) data.zeroCapSusceptance = (b0 * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> </div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  data.powerFlow[0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  data.powerFlow[1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  data.faultCurrent[0][0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  data.faultCurrent[0][1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  data.faultCurrent[0][2] = std::complex<double>(0, 0);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  data.faultCurrent[1][0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  data.faultCurrent[1][1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  data.faultCurrent[1][2] = std::complex<double>(0, 0);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_line_8h.html">Line.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> Line::Line() : <a class="code" href="class_branch.html">Branch</a>()</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 3; j++) {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  }</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> Line::Line(wxString name) : <a class="code" href="class_branch.html">Branch</a>()</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 3; j++) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_electricalData.name = name;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> Line::~Line() {}</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_line.html#a05eb3761f198a058045f85d6e685ca97"> 39</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#a05eb3761f198a058045f85d6e685ca97">Line::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword"></span>{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span>(PointToLineDistance(position) < 5.0) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="class_line.html#a297e12aa8ff0be5d344e245732487bdd"> 47</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#a297e12aa8ff0be5d344e245732487bdd">Line::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword"></span>{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  elementColour = m_offlineElementColour;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  std::vector<wxPoint2DDouble> pointList = m_pointList;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span>(!m_inserted && pointList.size() > 0) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  wxPoint2DDouble secondPoint = m_position;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span>(pointList.size() > 2) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  secondPoint = pointList[2];</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  pointList[1] = GetSwitchPoint(m_parentList[0], pointList[0], secondPoint);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  pointList.push_back(m_position);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Line selected (Layer 1).</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  DrawLine(pointList);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Draw nodes selection.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>(pointList.size() > 0) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  DrawCircle(pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  DrawCircle(pointList[pointList.size() - 1], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Draw line (Layer 2)</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  glLineWidth(1.5);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  DrawLine(pointList);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  DrawSwitches();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  DrawPowerFlowPts();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Draw nodes.</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">if</span>(pointList.size() > 0) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  DrawCircle(pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  DrawCircle(pointList[pointList.size() - 1], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// Draw pickboxes (Layer 3).</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(m_showPickbox) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  glPushMatrix();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  glLoadIdentity();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  DrawPickbox(WorldToScreen(m_pointList[i], translation, scale));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  glPopMatrix();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="class_line.html#a3eabf6de2af4ee71f72ce4f091c69978"> 116</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#a3eabf6de2af4ee71f72ce4f091c69978">Line::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(!m_parentList[0]) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span>(!m_parentList[1]) {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span>(!m_parentList[0] && !m_parentList[1]) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="class_line.html#a26c69f7f703dca718edc28d5093934a3"> 136</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#a26c69f7f703dca718edc28d5093934a3">Line::AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// First bus.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(m_parentList.size() == 0) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_position = position;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_pointList.push_back(parentPt); <span class="comment">// First point</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  m_switchRect.push_back(genRect);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  UpdateSwitches();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="class_bus.html">Bus</a>* parentBus = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(parent);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_electricalData.nominalVoltage = parentBus->GetElectricalData().nominalVoltage;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_electricalData.nominalVoltageUnit = parentBus->GetElectricalData().nominalVoltageUnit;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// Second bus.</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent != m_parentList[0]) {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="class_bus.html">Bus</a>* parentBus = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(parent);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span>(m_electricalData.nominalVoltage != parentBus->GetElectricalData().nominalVoltage ||</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_electricalData.nominalVoltageUnit != parentBus->GetElectricalData().nominalVoltageUnit) {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  wxMessageDialog msgDialog(NULL, _(<span class="stringliteral">"Unable to connect two buses with different nominal voltages.\n"</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="stringliteral">"Use a transformer or edit the bus properties."</span>),</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// Set first switch point.</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  wxPoint2DDouble secondPoint = parentPt;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span>(m_pointList.size() > 2) {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  secondPoint = m_pointList[2];</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], secondPoint);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// Set the second switch point.</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_pointList[m_pointList.size() - 1]));</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  m_pointList.push_back(parentPt); <span class="comment">// Last point.</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  m_switchRect.push_back(genRect);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  UpdateSwitches();</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  m_inserted = <span class="keyword">true</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="class_line.html#a125581fc6d21c83565b902751af331dc"> 203</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#a125581fc6d21c83565b902751af331dc">Line::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keyword"></span>{</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_pointList.begin(); it != m_pointList.end(); ++it) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span>(rect.Contains(*it)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> }</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="class_line.html#afa67498961416e645e0aa5358959ef1d"> 210</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#afa67498961416e645e0aa5358959ef1d">Line::MovePickbox</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a>) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span>(m_activePickboxID == i) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> }</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="class_line.html#acac760d9d67d9c4d007e03592d0e96b4"> 222</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#acac760d9d67d9c4d007e03592d0e96b4">Line::PickboxContains</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  wxRect2DDouble rect(m_pointList[i].m_x - 5.0, m_pointList[i].m_y - 5.0, 10.0, 10.0);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span>(rect.Contains(position)) {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  m_activePickboxID = i;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="class_line.html#a046a7b2ebff50f237f73dbc182f7ff6f"> 234</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#a046a7b2ebff50f237f73dbc182f7ff6f">Line::AddPoint</a>(wxPoint2DDouble point)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span>(m_parentList.size() != 0) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_pointList.push_back(point);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="class_line.html#abb812387508a9971570bfa1d38e41041"> 241</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#abb812387508a9971570bfa1d38e41041">Line::StartMove</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  m_moveStartPt = position;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  m_movePts = m_pointList;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="class_line.html#ac8be7d7136d86830c262280f51b79ea4"> 247</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#ac8be7d7136d86830c262280f51b79ea4">Line::MoveNode</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="comment">// First bus.</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// Second bus.</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">// If the line is selected, move all the points, except the switches and buses points.</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 1; i++) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="comment">// If parent is setted to NULL for the firts time, remove the parent child</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span>(m_parentList[1]) {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  m_parentList[1]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  m_parentList[1] = NULL;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// Recalculate switches positions</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="class_line.html#a978de0ff06b6f57401ade84045e1a55f"> 289</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#a978de0ff06b6f57401ade84045e1a55f">Line::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  wxFileName exeFileName(wxStandardPaths::Get().GetExecutablePath());</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  wxString exePath = exeFileName.GetPath();</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit line"</span>));</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">if</span>(m_activePickboxID == <a class="code" href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a>) {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  wxMenuItem* addNodeItem = <span class="keyword">new</span> wxMenuItem(&menu, <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049af05f38a3b3fea5d6da036dce48e9d960">ID_LINE_ADD_NODE</a>, _(<span class="stringliteral">"Insert node"</span>));</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  addNodeItem->SetBitmap(wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\menu\\addNode16.png"</span>));</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  menu.Append(addNodeItem);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  wxMenuItem* addNodeItem = <span class="keyword">new</span> wxMenuItem(&menu, <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a1a8f8c62fc201993f6a605ff06314803">ID_LINE_REMOVE_NODE</a>, _(<span class="stringliteral">"Remove node"</span>));</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  addNodeItem->SetBitmap(wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\menu\\removeNode16.png"</span>));</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  menu.Append(addNodeItem);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  wxMenuItem* deleteItem = <span class="keyword">new</span> wxMenuItem(&menu, <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a80c989d88bc686137e96564dfad6166a">ID_DELETE</a>, _(<span class="stringliteral">"Delete"</span>));</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  deleteItem->SetBitmap(wxImage(exePath + <span class="stringliteral">"\\..\\data\\images\\menu\\delete16.png"</span>));</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  menu.Append(deleteItem);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="keywordtype">void</span> Line::RemoveNode(wxPoint2DDouble point)</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span> {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">if</span>(PickboxContains(point)) {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">if</span>(m_activePickboxID == i) {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  m_pointList.erase(m_pointList.begin() + i);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="keywordtype">void</span> Line::AddNode(wxPoint2DDouble point)</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordtype">int</span> segmentNumber = 0;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  PointToLineDistance(point, &segmentNumber);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">if</span>(segmentNumber > 0 && segmentNumber < (<span class="keywordtype">int</span>)m_pointList.size() - 2) {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  m_pointList.insert(m_pointList.begin() + segmentNumber + 1, point);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="class_line.html#aa146d6b0c7f3b74204f2c88dcbd7f4b0"> 335</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#aa146d6b0c7f3b74204f2c88dcbd7f4b0">Line::CalculateBoundaries</a>(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom)<span class="keyword"> const</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="keyword"></span>{</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">if</span>(m_pointList.size() > 0) {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="comment">// Check points list boundaries.</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  leftUp = m_pointList[0];</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  rightBottom = m_pointList[0];</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < (int)m_pointList.size(); i++) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">if</span>(m_pointList[i].m_x < leftUp.m_x) leftUp.m_x = m_pointList[i].m_x;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">if</span>(m_pointList[i].m_y < leftUp.m_y) leftUp.m_y = m_pointList[i].m_y;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">if</span>(m_pointList[i].m_x > rightBottom.m_x) rightBottom.m_x = m_pointList[i].m_x;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">if</span>(m_pointList[i].m_y > rightBottom.m_y) rightBottom.m_y = m_pointList[i].m_y;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="class_line.html#a24c6a659148f063c78e080a18f4517a1"> 350</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#a24c6a659148f063c78e080a18f4517a1">Line::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <a class="code" href="class_line_form.html">LineForm</a>* lineForm = <span class="keyword">new</span> <a class="code" href="class_line_form.html">LineForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">if</span>(lineForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  lineForm->Destroy();</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  lineForm->Destroy();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="class_line.html#a1f3ef94716c52a357ecbcbdf00b0e072"> 361</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#a1f3ef94716c52a357ecbcbdf00b0e072">Line::SetNominalVoltage</a>(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">if</span>(nominalVoltage.size() > 0) {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  m_electricalData.nominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  m_electricalData.nominalVoltageUnit = nominalVoltageUnit[0];</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="class_line.html#a6d35082da4d30bd432b73b72dd86fadb"> 369</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_line.html#a6d35082da4d30bd432b73b72dd86fadb">Line::SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1 && parent == m_parentList[0]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2 && parent == m_parentList[1]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">if</span>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  wxRect2DDouble nodeRect(0, 0, 0, 0);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  nodeRect = wxRect2DDouble(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="comment">// If the line has no parents set the new rated voltage, otherwise check if it's not connecting</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="comment">// two different voltages buses</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="class_bus.html">Bus</a>* parentBus = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(parent);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">if</span>(!m_parentList[0] && !m_parentList[1]) {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  m_electricalData.nominalVoltage = parentBus->GetElectricalData().nominalVoltage;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  m_electricalData.nominalVoltageUnit = parentBus->GetElectricalData().nominalVoltageUnit;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_electricalData.nominalVoltage != parentBus->GetElectricalData().nominalVoltage ||</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  m_electricalData.nominalVoltageUnit != parentBus->GetElectricalData().nominalVoltageUnit) {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  wxMessageDialog msgDialog(NULL, _(<span class="stringliteral">"Unable to connect two buses with different nominal voltages.\n"</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="stringliteral">"Use a transformer or edit the bus properties."</span>),</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="comment">// Check if the user is trying to connect the same bus.</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">if</span>(m_parentList[1] == parent) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  m_parentList[0] = parent;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="comment">// Centralize the node on bus.</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  wxPoint2DDouble parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  m_pointList[0], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  m_pointList[0] = parentPt;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">if</span>(m_parentList[0] == parent) {</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  m_parentList[1] = parent;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[m_pointList.size() - 1], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  m_pointList[m_pointList.size() - 1] = parentPt;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span> </div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) m_parentList[0] = NULL;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) m_parentList[1] = NULL;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div><div class="line"><a name="l00449"></a><span class="lineno"><a class="line" href="class_line.html#a400c8d0397ecdfe6c0a8380ee6bc7e1e"> 449</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#a400c8d0397ecdfe6c0a8380ee6bc7e1e">Line::SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection)</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span> {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  m_pfDirection = pfDirection;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span> }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> </div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="keywordtype">void</span> Line::UpdatePowerFlowArrowsPosition()</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  std::vector<wxPoint2DDouble> edges;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">switch</span>(m_pfDirection) {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>: {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  m_powerFlowArrow.clear();</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523">PF_BUS1_TO_BUS2</a>: {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < (int)m_pointList.size() - 1; i++) {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  edges.push_back(m_pointList[i]);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095">PF_BUS2_TO_BUS1</a>: {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = (<span class="keywordtype">int</span>)m_pointList.size() - 2; i > 0; i--) {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  edges.push_back(m_pointList[i]);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  CalculatePowerFlowPts(edges);</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"><a class="line" href="class_line.html#ab73d74778b5aa9807d21f156d15fadf7"> 478</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#ab73d74778b5aa9807d21f156d15fadf7">Line::RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  m_pointList[0] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], rotAngle);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  m_pointList[m_pointList.size() - 1] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[m_pointList.size() - 1], rotAngle);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> </div><div class="line"><a name="l00492"></a><span class="lineno"><a class="line" href="class_line.html#af9a931bdb7e0693cacae010a19b744e6"> 492</a></span> <span class="keywordtype">void</span> <a class="code" href="class_line.html#af9a931bdb7e0693cacae010a19b744e6">Line::SetPointList</a>(std::vector<wxPoint2DDouble> pointList)</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  m_pointList = pointList;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span> </div><div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="class_line.html#afc4916268d2a32014e4ab0f8308165a1"> 499</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_line.html#afc4916268d2a32014e4ab0f8308165a1">Line::GetCopy</a>()</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <a class="code" href="class_line.html">Line</a>* copy = <span class="keyword">new</span> <a class="code" href="class_line.html">Line</a>();</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> }</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div><div class="line"><a name="l00506"></a><span class="lineno"><a class="line" href="class_line.html#a51e7bff578cd280464a70200fc323efc"> 506</a></span> wxString <a class="code" href="class_line.html#a51e7bff578cd280464a70200fc323efc">Line::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="keyword"></span>{</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordtype">int</span> busNumber[2];</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  busNumber[0] = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[0])->GetElectricalData().number + 1;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  busNumber[1] = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[1])->GetElectricalData().number + 1;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> </div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  tipText += _(<span class="stringliteral">"\nP"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[0], busNumber[1]) +</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  wxString::FromDouble(m_electricalData.powerFlow[0].real(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  tipText += _(<span class="stringliteral">"\nQ"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[0], busNumber[1]) +</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  wxString::FromDouble(m_electricalData.powerFlow[0].imag(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  tipText += _(<span class="stringliteral">"\nP"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[1], busNumber[0]) +</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  wxString::FromDouble(m_electricalData.powerFlow[1].real(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  tipText += _(<span class="stringliteral">"\nQ"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[1], busNumber[0]) +</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  wxString::FromDouble(m_electricalData.powerFlow[1].imag(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> </div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span> }</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> </div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> Line::GetPUElectricalData(<span class="keywordtype">double</span> systemBasePower)</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span> {</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordtype">double</span> lineBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordtype">double</span> baseVoltage = GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordtype">double</span> systemBaseImpedance = (baseVoltage * baseVoltage) / systemBasePower;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordtype">double</span> lineBaseImpedance = (baseVoltage * baseVoltage) / lineBasePower;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span> </div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="comment">// Resistance</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordtype">double</span> r = data.resistance;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">if</span>(data.resistanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>) r *= data.lineSize;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">if</span>(data.resistanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">if</span>(data.useLinePower) data.resistance = (r * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  data.resistance = r / systemBaseImpedance;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span> </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="comment">// Inductive reactance</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordtype">double</span> x = data.indReactance;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">if</span>(data.indReactanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>) x *= data.lineSize;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">if</span>(data.indReactanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">if</span>(data.useLinePower) data.indReactance = (x * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  data.indReactance = x / systemBaseImpedance;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span> </div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="comment">// Capacitive susceptance</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordtype">double</span> b = data.capSusceptance;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">if</span>(data.capSusceptanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>) b *= data.lineSize;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">if</span>(data.capSusceptanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">if</span>(data.useLinePower) data.capSusceptance = (b * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  data.capSusceptance = b / systemBaseImpedance;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  }</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  data.capSusceptanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="comment">// Zero seq. resistance</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordtype">double</span> r0 = data.zeroResistance;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">if</span>(data.useLinePower) data.zeroResistance = (r0 * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="comment">// Zero seq. ind. reactance</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordtype">double</span> x0 = data.zeroIndReactance;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">if</span>(data.useLinePower) data.zeroIndReactance = (x0 * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> </div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="comment">// Zero seq. cap. susceptance</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordtype">double</span> b0 = data.zeroCapSusceptance;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">if</span>(data.useLinePower) data.zeroCapSusceptance = (b0 * lineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> </div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  data.powerFlow[0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  data.powerFlow[1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  data.faultCurrent[0][0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  data.faultCurrent[0][1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  data.faultCurrent[0][2] = std::complex<double>(0, 0);</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  data.faultCurrent[1][0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  data.faultCurrent[1][1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  data.faultCurrent[1][2] = std::complex<double>(0, 0);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_line_html_afa67498961416e645e0aa5358959ef1d"><div class="ttname"><a href="class_line.html#afa67498961416e645e0aa5358959ef1d">Line::MovePickbox</a></div><div class="ttdeci">virtual void MovePickbox(wxPoint2DDouble position)</div><div class="ttdoc">Move the pickbox. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00210">Line.cpp:210</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00052">Element.h:52</a></div></div> <div class="ttc" id="class_line_form_html"><div class="ttname"><a href="class_line_form.html">LineForm</a></div><div class="ttdoc">Form to edit the line power data. </div><div class="ttdef"><b>Definition:</b> <a href="_line_form_8h_source.html#l00032">LineForm.h:32</a></div></div> @@ -102,7 +102,8 @@ $(document).ready(function(){initNavTree('_line_8cpp_source.html','');}); <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049af05f38a3b3fea5d6da036dce48e9d960"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049af05f38a3b3fea5d6da036dce48e9d960">ID_LINE_ADD_NODE</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00053">Element.h:53</a></div></div> <div class="ttc" id="class_line_html_acac760d9d67d9c4d007e03592d0e96b4"><div class="ttname"><a href="class_line.html#acac760d9d67d9c4d007e03592d0e96b4">Line::PickboxContains</a></div><div class="ttdeci">virtual bool PickboxContains(wxPoint2DDouble position)</div><div class="ttdoc">Check if a pickbox contains a point. If contains the attributes related to pickbox movement will be c...</div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00222">Line.cpp:222</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> +<div class="ttc" id="_line_8h_html"><div class="ttname"><a href="_line_8h.html">Line.h</a></div></div> <div class="ttc" id="class_line_html_a26c69f7f703dca718edc28d5093934a3"><div class="ttname"><a href="class_line.html#a26c69f7f703dca718edc28d5093934a3">Line::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00136">Line.cpp:136</a></div></div> <div class="ttc" id="class_line_html_a24c6a659148f063c78e080a18f4517a1"><div class="ttname"><a href="class_line.html#a24c6a659148f063c78e080a18f4517a1">Line::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00350">Line.cpp:350</a></div></div> <div class="ttc" id="class_line_html_aa146d6b0c7f3b74204f2c88dcbd7f4b0"><div class="ttname"><a href="class_line.html#aa146d6b0c7f3b74204f2c88dcbd7f4b0">Line::CalculateBoundaries</a></div><div class="ttdeci">virtual void CalculateBoundaries(wxPoint2DDouble &leftUp, wxPoint2DDouble &rightBottom) const</div><div class="ttdoc">Calculate the element boundaries. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00335">Line.cpp:335</a></div></div> @@ -111,7 +112,7 @@ $(document).ready(function(){initNavTree('_line_8cpp_source.html','');}); <div class="ttc" id="class_line_html_a3eabf6de2af4ee71f72ce4f091c69978"><div class="ttname"><a href="class_line.html#a3eabf6de2af4ee71f72ce4f091c69978">Line::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00116">Line.cpp:116</a></div></div> <div class="ttc" id="class_line_html_a297e12aa8ff0be5d344e245732487bdd"><div class="ttname"><a href="class_line.html#a297e12aa8ff0be5d344e245732487bdd">Line::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00047">Line.cpp:47</a></div></div> <div class="ttc" id="class_element_html_ac38d6707d08cb5c057032aa94b511a62"><div class="ttname"><a href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">Element::AddChild</a></div><div class="ttdeci">virtual void AddChild(Element *child)</div><div class="ttdoc">Add a child to the child list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00353">Element.cpp:353</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> <div class="ttc" id="class_line_html_ab73d74778b5aa9807d21f156d15fadf7"><div class="ttname"><a href="class_line.html#ab73d74778b5aa9807d21f156d15fadf7">Line::RotateNode</a></div><div class="ttdeci">virtual void RotateNode(Element *parent, bool clockwise=true)</div><div class="ttdoc">Rotate a node. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00478">Line.cpp:478</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095">PF_BUS2_TO_BUS1</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00083">PowerElement.h:83</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049a1a8f8c62fc201993f6a605ff06314803"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a1a8f8c62fc201993f6a605ff06314803">ID_LINE_REMOVE_NODE</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00054">Element.h:54</a></div></div> @@ -121,7 +122,7 @@ $(document).ready(function(){initNavTree('_line_8cpp_source.html','');}); <div class="ttc" id="class_line_html_a978de0ff06b6f57401ade84045e1a55f"><div class="ttname"><a href="class_line.html#a978de0ff06b6f57401ade84045e1a55f">Line::GetContextMenu</a></div><div class="ttdeci">virtual bool GetContextMenu(wxMenu &menu)</div><div class="ttdoc">Get the element contex menu. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00289">Line.cpp:289</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00079">PowerElement.h:79</a></div></div> <div class="ttc" id="class_line_html_a1f3ef94716c52a357ecbcbdf00b0e072"><div class="ttname"><a href="class_line.html#a1f3ef94716c52a357ecbcbdf00b0e072">Line::SetNominalVoltage</a></div><div class="ttdeci">virtual void SetNominalVoltage(std::vector< double > nominalVoltage, std::vector< ElectricalUnit > nominalVoltageUnit)</div><div class="ttdoc">Set nominal voltage of the element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00361">Line.cpp:361</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> +<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdoc">Class to manage color of OpenGL. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a></div><div class="ttdeci">PowerFlowDirection</div><div class="ttdoc">Direction of power flow arrows. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00078">PowerElement.h:78</a></div></div> <div class="ttc" id="class_line_html_afc4916268d2a32014e4ab0f8308165a1"><div class="ttname"><a href="class_line.html#afc4916268d2a32014e4ab0f8308165a1">Line::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00499">Line.cpp:499</a></div></div> <div class="ttc" id="class_element_html_a536ad18a847dcc979c984b3cb287f238"><div class="ttname"><a href="class_element.html#a536ad18a847dcc979c984b3cb287f238">Element::GetPosition</a></div><div class="ttdeci">wxPoint2DDouble GetPosition() const</div><div class="ttdoc">Get the element position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00187">Element.h:187</a></div></div> @@ -131,7 +132,7 @@ $(document).ready(function(){initNavTree('_line_8cpp_source.html','');}); <div class="ttc" id="class_line_html_a51e7bff578cd280464a70200fc323efc"><div class="ttname"><a href="class_line.html#a51e7bff578cd280464a70200fc323efc">Line::GetTipText</a></div><div class="ttdeci">virtual wxString GetTipText() const</div><div class="ttdoc">Get the tip text. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8cpp_source.html#l00506">Line.cpp:506</a></div></div> <div class="ttc" id="_element_8h_html_a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433"><div class="ttname"><a href="_element_8h.html#a7b88da333c092757d91d7492dfa8e316a2efa051c0a3f23f2324cef5bc930f433">ID_PB_NONE</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00038">Element.h:38</a></div></div> <div class="ttc" id="class_open_g_l_colour_html_a12119e58ae1bc7d6888224252695c066"><div class="ttname"><a href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">OpenGLColour::GetRGBA</a></div><div class="ttdeci">const GLdouble * GetRGBA() const</div><div class="ttdoc">Get colour in RGBA. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00101">Element.h:101</a></div></div> -<div class="ttc" id="class_branch_html"><div class="ttname"><a href="class_branch.html">Branch</a></div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00024">Branch.h:24</a></div></div> +<div class="ttc" id="class_branch_html"><div class="ttname"><a href="class_branch.html">Branch</a></div><div class="ttdoc">Abstract class for branch power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00031">Branch.h:31</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_line_8h.html b/docs/doxygen/html/_line_8h.html new file mode 100644 index 0000000..56bcb24 --- /dev/null +++ b/docs/doxygen/html/_line_8h.html @@ -0,0 +1,118 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/Line.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_line_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">Line.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_line_form_8h_source.html">LineForm.h</a>"</code><br /> +<code>#include "<a class="el" href="_branch_8h_source.html">Branch.h</a>"</code><br /> +</div> +<p><a href="_line_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_line_electrical_data.html">LineElectricalData</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_line.html">Line</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Power line element. <a href="class_line.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_line_8h.html">Line.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_line_8h_source.html b/docs/doxygen/html/_line_8h_source.html index 5c484ac..46b6918 100644 --- a/docs/doxygen/html/_line_8h_source.html +++ b/docs/doxygen/html/_line_8h_source.html @@ -88,23 +88,24 @@ $(document).ready(function(){initNavTree('_line_8h_source.html','');}); <div class="title">Line.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef LINE_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define LINE_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_line_form_8h.html">LineForm.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Branch.h"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="struct_line_electrical_data.html"> 24</a></span> <span class="keyword">struct </span><a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="comment">// General</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> nominalVoltage = 138.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalVoltageUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">double</span> nominalPower = 100.0;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">double</span> resistance = 0.0;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">double</span> indReactance = 1.0;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> capSusceptance = 0.0;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> capSusceptanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> lineSize = 100.0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">bool</span> useLinePower = <span class="keyword">false</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// Power flow (p.u.)</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::complex<double> current[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  std::complex<double> powerFlow[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> zeroResistance = 0.0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">double</span> zeroIndReactance = 1.0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> zeroCapSusceptance = 0.0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::complex<double> faultCurrent[2][3];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_line.html"> 52</a></span> <span class="keyword">class </span><a class="code" href="class_line.html">Line</a> : <span class="keyword">public</span> <a class="code" href="class_branch.html">Branch</a></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="class_line.html">Line</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_line.html">Line</a>(wxString name);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  ~<a class="code" href="class_line.html">Line</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Move(wxPoint2DDouble position);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> StartMove(wxPoint2DDouble position);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> MoveNode(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> SetNodeParent(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="class_line.html#a7c72fc585eb96bf9565cca0ce300cfd9"> 64</a></span>  <span class="keyword">virtual</span> wxCursor <a class="code" href="class_line.html#a7c72fc585eb96bf9565cca0ce300cfd9">GetBestPickboxCursor</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> wxCURSOR_SIZING; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> AddParent(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Intersects(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> MovePickbox(wxPoint2DDouble position);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> PickboxContains(wxPoint2DDouble position);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AddPoint(wxPoint2DDouble point);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RemoveNode(wxPoint2DDouble point);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AddNode(wxPoint2DDouble point);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RotateNode(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CalculateBoundaries(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom) <span class="keyword">const</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetPowerFlowDirection(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> GetElectricalData()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">virtual</span> <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemBasePower);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetPointList(std::vector<wxPoint2DDouble> pointList);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">void</span> UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> m_electricalData;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> };</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#endif // LINE_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_line_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef LINE_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define LINE_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_line_form_8h.html">LineForm.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_branch_8h.html">Branch.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="struct_line_electrical_data.html"> 24</a></span> <span class="keyword">struct </span><a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="comment">// General</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> nominalVoltage = 138.0;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalVoltageUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">double</span> nominalPower = 100.0;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordtype">double</span> resistance = 0.0;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">double</span> indReactance = 1.0;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> capSusceptance = 0.0;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> capSusceptanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> lineSize = 100.0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">bool</span> useLinePower = <span class="keyword">false</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="comment">// Power flow (p.u.)</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::complex<double> current[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  std::complex<double> powerFlow[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> zeroResistance = 0.0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">double</span> zeroIndReactance = 1.0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> zeroCapSusceptance = 0.0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::complex<double> faultCurrent[2][3];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="class_line.html"> 59</a></span> <span class="keyword">class </span><a class="code" href="class_line.html">Line</a> : <span class="keyword">public</span> <a class="code" href="class_branch.html">Branch</a></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="class_line.html">Line</a>();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="class_line.html">Line</a>(wxString name);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  ~<a class="code" href="class_line.html">Line</a>();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Move(wxPoint2DDouble position);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> StartMove(wxPoint2DDouble position);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> MoveNode(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> SetNodeParent(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="class_line.html#a7c72fc585eb96bf9565cca0ce300cfd9"> 71</a></span>  <span class="keyword">virtual</span> wxCursor <a class="code" href="class_line.html#a7c72fc585eb96bf9565cca0ce300cfd9">GetBestPickboxCursor</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> wxCURSOR_SIZING; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> AddParent(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Intersects(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> MovePickbox(wxPoint2DDouble position);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> PickboxContains(wxPoint2DDouble position);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AddPoint(wxPoint2DDouble point);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RemoveNode(wxPoint2DDouble point);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> AddNode(wxPoint2DDouble point);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RotateNode(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CalculateBoundaries(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom) <span class="keyword">const</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetPowerFlowDirection(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">virtual</span> <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> GetElectricalData()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">virtual</span> <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemBasePower);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetPointList(std::vector<wxPoint2DDouble> pointList);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">void</span> UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> m_electricalData;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> };</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#endif // LINE_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00031">PowerElement.h:31</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220cca"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a></div><div class="ttdeci">ElectricalUnit</div><div class="ttdoc">Electrical units. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00028">PowerElement.h:28</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> <div class="ttc" id="_line_form_8h_html"><div class="ttname"><a href="_line_form_8h.html">LineForm.h</a></div></div> -<div class="ttc" id="class_line_html_a7c72fc585eb96bf9565cca0ce300cfd9"><div class="ttname"><a href="class_line.html#a7c72fc585eb96bf9565cca0ce300cfd9">Line::GetBestPickboxCursor</a></div><div class="ttdeci">virtual wxCursor GetBestPickboxCursor() const</div><div class="ttdoc">Get the best cursor to shown to the user when the mouse is above a pickbox. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00064">Line.h:64</a></div></div> +<div class="ttc" id="class_line_html_a7c72fc585eb96bf9565cca0ce300cfd9"><div class="ttname"><a href="class_line.html#a7c72fc585eb96bf9565cca0ce300cfd9">Line::GetBestPickboxCursor</a></div><div class="ttdeci">virtual wxCursor GetBestPickboxCursor() const</div><div class="ttdoc">Get the best cursor to shown to the user when the mouse is above a pickbox. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00071">Line.h:71</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00039">PowerElement.h:39</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> <div class="ttc" id="struct_line_electrical_data_html"><div class="ttname"><a href="struct_line_electrical_data.html">LineElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00024">Line.h:24</a></div></div> +<div class="ttc" id="_branch_8h_html"><div class="ttname"><a href="_branch_8h.html">Branch.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a></div><div class="ttdeci">PowerFlowDirection</div><div class="ttdoc">Direction of power flow arrows. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00078">PowerElement.h:78</a></div></div> -<div class="ttc" id="class_branch_html"><div class="ttname"><a href="class_branch.html">Branch</a></div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00024">Branch.h:24</a></div></div> +<div class="ttc" id="class_branch_html"><div class="ttname"><a href="class_branch.html">Branch</a></div><div class="ttdoc">Abstract class for branch power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00031">Branch.h:31</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>Line.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_line_8h.html">Line.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_line_form_8cpp_source.html b/docs/doxygen/html/_line_form_8cpp_source.html index f0eab08..1c97d7b 100644 --- a/docs/doxygen/html/_line_form_8cpp_source.html +++ b/docs/doxygen/html/_line_form_8cpp_source.html @@ -88,17 +88,18 @@ $(document).ready(function(){initNavTree('_line_form_8cpp_source.html','');}); <div class="title">LineForm.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_line_form_8h.html">LineForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_switching_form_8h.html">SwitchingForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "Line.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> LineForm::LineForm(wxWindow* parent, <a class="code" href="class_line.html">Line</a>* line) : <a class="code" href="class_line_form_base.html">LineFormBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_choiceResistance->SetString(1, L<span class="stringliteral">'\u03A9'</span>);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_choiceResistance->SetString(2, (wxString)L<span class="stringliteral">'\u03A9'</span> + <span class="stringliteral">"/km"</span>);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_choiceResistance->SetInitialSize();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_textCtrlResistance->SetInitialSize();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_choiceReactance->SetString(1, L<span class="stringliteral">'\u03A9'</span>);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_choiceReactance->SetString(2, (wxString)L<span class="stringliteral">'\u03A9'</span> + <span class="stringliteral">"/km"</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choiceReactance->SetInitialSize();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_textCtrlReactance->SetInitialSize();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  ReplaceStaticTextLabelChar(m_staticTextZeroResistance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ReplaceStaticTextLabelChar(m_staticTextZeroReactance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  ReplaceStaticTextLabelChar(m_staticTextZeroSusceptance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  Layout();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_parent = parent;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_line = line;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = line->GetElectricalData();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  wxString nominalVoltageStr = <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.nominalVoltage);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">switch</span>(data.nominalVoltageUnit) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  nominalVoltageStr += <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  nominalVoltageStr += <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_staticTextNominalVoltageValue->SetLabel(nominalVoltageStr);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_textCtrlNominalPower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.nominalPower));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">switch</span>(data.nominalPowerUnit) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_choiceNominalPower->SetSelection(0);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_choiceNominalPower->SetSelection(1);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_choiceNominalPower->SetSelection(2);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_textCtrlResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.resistance));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">switch</span>(data.resistanceUnit) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_choiceResistance->SetSelection(0);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>: {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_choiceResistance->SetSelection(1);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>: {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_choiceResistance->SetSelection(2);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_textCtrlReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.indReactance));</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">switch</span>(data.indReactanceUnit) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_choiceReactance->SetSelection(0);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>: {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_choiceReactance->SetSelection(1);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>: {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_choiceReactance->SetSelection(2);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_textCtrlSusceptance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.capSusceptance));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">switch</span>(data.capSusceptanceUnit) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_choiceSusceptance->SetSelection(0);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11">UNIT_S</a>: {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_choiceSusceptance->SetSelection(1);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65">UNIT_S_km</a>: {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_choiceSusceptance->SetSelection(2);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_textCtrlLineSize->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.lineSize));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_checkUseLinePower->SetValue(data.useLinePower);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_textCtrlZeroResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.zeroResistance));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_textCtrlZeroReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.zeroIndReactance));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_textCtrlZeroSusceptance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.zeroCapSusceptance));</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> LineForm::~LineForm() {}</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="keywordtype">void</span> LineForm::OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keywordtype">void</span> LineForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keywordtype">void</span> LineForm::OnStabilityButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_line);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  swForm.SetTitle(_(<span class="stringliteral">"Line: Switching"</span>));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  swForm.ShowModal();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="keywordtype">void</span> LineForm::ReplaceStaticTextLabelChar(wxStaticText* staticText, <span class="keywordtype">wchar_t</span> newChar)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  wxString label = staticText->GetLabel();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  label[label.length() - 2] = newChar;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  staticText->SetLabel(label);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keywordtype">bool</span> LineForm::ValidateData()</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = m_line->GetElectricalData();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlNominalPower->GetValue(), data.nominalPower,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Nominal power\"."</span>)))</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">switch</span>(m_choiceNominalPower->GetSelection()) {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlResistance->GetValue(), data.resistance,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Resistance\"."</span>)))</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">switch</span>(m_choiceResistance->GetSelection()) {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlReactance->GetValue(), data.indReactance,</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Indutive Reactance\"."</span>)))</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">switch</span>(m_choiceReactance->GetSelection()) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlSusceptance->GetValue(), data.capSusceptance,</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Capacitive Susceptance\"."</span>)))</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">switch</span>(m_choiceSusceptance->GetSelection()) {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  data.capSusceptanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  data.capSusceptanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11">UNIT_S</a>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  data.capSusceptanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65">UNIT_S_km</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlLineSize->GetValue(), data.lineSize,</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Line size\"."</span>)))</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  data.useLinePower = m_checkUseLinePower->GetValue();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero-sequence resistance\"."</span>)))</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroIndReactance,</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero-sequence indutive reactance\"."</span>)))</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlZeroSusceptance->GetValue(), data.zeroCapSusceptance,</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero-sequence capacitive susceptance\"."</span>)))</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  m_line->SetElectricalData(data);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> }</div><div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00043">PowerElement.h:43</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_line_form_8h.html">LineForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_switching_form_8h.html">SwitchingForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_line_8h.html">Line.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> LineForm::LineForm(wxWindow* parent, <a class="code" href="class_line.html">Line</a>* line) : <a class="code" href="class_line_form_base.html">LineFormBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_choiceResistance->SetString(1, L<span class="stringliteral">'\u03A9'</span>);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_choiceResistance->SetString(2, (wxString)L<span class="stringliteral">'\u03A9'</span> + <span class="stringliteral">"/km"</span>);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_choiceResistance->SetInitialSize();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_textCtrlResistance->SetInitialSize();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_choiceReactance->SetString(1, L<span class="stringliteral">'\u03A9'</span>);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_choiceReactance->SetString(2, (wxString)L<span class="stringliteral">'\u03A9'</span> + <span class="stringliteral">"/km"</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choiceReactance->SetInitialSize();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_textCtrlReactance->SetInitialSize();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  ReplaceStaticTextLabelChar(m_staticTextZeroResistance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ReplaceStaticTextLabelChar(m_staticTextZeroReactance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  ReplaceStaticTextLabelChar(m_staticTextZeroSusceptance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  Layout();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_parent = parent;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_line = line;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = line->GetElectricalData();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  wxString nominalVoltageStr = <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.nominalVoltage);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">switch</span>(data.nominalVoltageUnit) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  nominalVoltageStr += <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  nominalVoltageStr += <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_staticTextNominalVoltageValue->SetLabel(nominalVoltageStr);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_textCtrlNominalPower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.nominalPower));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">switch</span>(data.nominalPowerUnit) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_choiceNominalPower->SetSelection(0);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_choiceNominalPower->SetSelection(1);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_choiceNominalPower->SetSelection(2);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_textCtrlResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.resistance));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">switch</span>(data.resistanceUnit) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_choiceResistance->SetSelection(0);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>: {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_choiceResistance->SetSelection(1);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>: {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_choiceResistance->SetSelection(2);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_textCtrlReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.indReactance));</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">switch</span>(data.indReactanceUnit) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_choiceReactance->SetSelection(0);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>: {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_choiceReactance->SetSelection(1);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>: {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_choiceReactance->SetSelection(2);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_textCtrlSusceptance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.capSusceptance));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">switch</span>(data.capSusceptanceUnit) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_choiceSusceptance->SetSelection(0);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11">UNIT_S</a>: {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_choiceSusceptance->SetSelection(1);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65">UNIT_S_km</a>: {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_choiceSusceptance->SetSelection(2);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_textCtrlLineSize->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.lineSize));</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_checkUseLinePower->SetValue(data.useLinePower);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_textCtrlZeroResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.zeroResistance));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_textCtrlZeroReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.zeroIndReactance));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_textCtrlZeroSusceptance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Line::StringFromDouble</a>(data.zeroCapSusceptance));</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> LineForm::~LineForm() {}</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="keywordtype">void</span> LineForm::OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keywordtype">void</span> LineForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keywordtype">void</span> LineForm::OnStabilityButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_line);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  swForm.SetTitle(_(<span class="stringliteral">"Line: Switching"</span>));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  swForm.ShowModal();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="keywordtype">void</span> LineForm::ReplaceStaticTextLabelChar(wxStaticText* staticText, <span class="keywordtype">wchar_t</span> newChar)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  wxString label = staticText->GetLabel();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  label[label.length() - 2] = newChar;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  staticText->SetLabel(label);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keywordtype">bool</span> LineForm::ValidateData()</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = m_line->GetElectricalData();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlNominalPower->GetValue(), data.nominalPower,</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Nominal power\"."</span>)))</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">switch</span>(m_choiceNominalPower->GetSelection()) {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlResistance->GetValue(), data.resistance,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Resistance\"."</span>)))</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">switch</span>(m_choiceResistance->GetSelection()) {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlReactance->GetValue(), data.indReactance,</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Indutive Reactance\"."</span>)))</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">switch</span>(m_choiceReactance->GetSelection()) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlSusceptance->GetValue(), data.capSusceptance,</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Capacitive Susceptance\"."</span>)))</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">switch</span>(m_choiceSusceptance->GetSelection()) {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  data.capSusceptanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  data.capSusceptanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11">UNIT_S</a>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  data.capSusceptanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65">UNIT_S_km</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlLineSize->GetValue(), data.lineSize,</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Line size\"."</span>)))</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  data.useLinePower = m_checkUseLinePower->GetValue();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero-sequence resistance\"."</span>)))</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroIndReactance,</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero-sequence indutive reactance\"."</span>)))</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span>(!m_line->DoubleFromString(m_parent, m_textCtrlZeroSusceptance->GetValue(), data.zeroCapSusceptance,</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero-sequence capacitive susceptance\"."</span>)))</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  m_line->SetElectricalData(data);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> }</div><div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00043">PowerElement.h:43</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00030">PowerElement.h:30</a></div></div> <div class="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdoc">Form to edit the switching data of power elements for electromechanical transient studies...</div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00032">SwitchingForm.h:32</a></div></div> <div class="ttc" id="class_line_form_base_html"><div class="ttname"><a href="class_line_form_base.html">LineFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00374">ElementForm.h:374</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00031">PowerElement.h:31</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> <div class="ttc" id="_line_form_8h_html"><div class="ttname"><a href="_line_form_8h.html">LineForm.h</a></div></div> +<div class="ttc" id="_line_8h_html"><div class="ttname"><a href="_line_8h.html">Line.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00039">PowerElement.h:39</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00044">PowerElement.h:44</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11">UNIT_S</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00045">PowerElement.h:45</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> <div class="ttc" id="_switching_form_8h_html"><div class="ttname"><a href="_switching_form_8h.html">SwitchingForm.h</a></div></div> <div class="ttc" id="struct_line_electrical_data_html"><div class="ttname"><a href="struct_line_electrical_data.html">LineElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00024">Line.h:24</a></div></div> <div class="ttc" id="class_element_html_abb2e253ec1e86353cd7160209c96553c"><div class="ttname"><a href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a></div><div class="ttdeci">static wxString StringFromDouble(double value, int minDecimal=1)</div><div class="ttdoc">Convert a double value to string. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00320">Element.cpp:320</a></div></div> diff --git a/docs/doxygen/html/_line_form_8h_source.html b/docs/doxygen/html/_line_form_8h_source.html index df9f02e..911327d 100644 --- a/docs/doxygen/html/_line_form_8h_source.html +++ b/docs/doxygen/html/_line_form_8h_source.html @@ -91,7 +91,7 @@ $(document).ready(function(){initNavTree('_line_form_8h_source.html','');}); <a href="_line_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef LINEFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define LINEFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">class </span><a class="code" href="class_line.html">Line</a>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_switching_form.html">SwitchingForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_line_form.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_line_form.html">LineForm</a> : <span class="keyword">public</span> <a class="code" href="class_line_form_base.html">LineFormBase</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_line_form.html">LineForm</a>(wxWindow* parent, <a class="code" href="class_line.html">Line</a>* line);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_line_form.html">LineForm</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStabilityButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ReplaceStaticTextLabelChar(wxStaticText* staticText, <span class="keywordtype">wchar_t</span> newChar);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_line.html">Line</a>* m_line = NULL;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#endif // LINEFORM_H</span></div><div class="ttc" id="class_line_form_html"><div class="ttname"><a href="class_line_form.html">LineForm</a></div><div class="ttdoc">Form to edit the line power data. </div><div class="ttdef"><b>Definition:</b> <a href="_line_form_8h_source.html#l00032">LineForm.h:32</a></div></div> <div class="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdoc">Form to edit the switching data of power elements for electromechanical transient studies...</div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00032">SwitchingForm.h:32</a></div></div> <div class="ttc" id="class_line_form_base_html"><div class="ttname"><a href="class_line_form_base.html">LineFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00374">ElementForm.h:374</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_load_8cpp_source.html b/docs/doxygen/html/_load_8cpp_source.html index 9b7b909..0dd68df 100644 --- a/docs/doxygen/html/_load_8cpp_source.html +++ b/docs/doxygen/html/_load_8cpp_source.html @@ -88,8 +88,8 @@ $(document).ready(function(){initNavTree('_load_8cpp_source.html','');}); <div class="title">Load.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "Load.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> Load::Load() : <a class="code" href="class_shunt.html">Shunt</a>() {}</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Load::Load(wxString name) : <a class="code" href="class_shunt.html">Shunt</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> Load::~Load() {}</div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="class_load.html#ac9f449be9b919b36924a844324bf37ee"> 23</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_load.html#ac9f449be9b919b36924a844324bf37ee">Load::AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_position = parentPt + wxPoint2DDouble(0.0, 100.0); <span class="comment">// Shifts the position to the down of the bus.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_width = m_height = 20.0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_rect = wxRect2DDouble(m_position.m_x - 10.0, m_position.m_y - 10.0, m_width, m_height);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_pointList.push_back(parentPt);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -20.0));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -10.0));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_triangPts.push_back(wxPoint2DDouble(-m_width / 2.0, -m_height / 2.0));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_triangPts.push_back(wxPoint2DDouble(m_width / 2.0, -m_height / 2.0));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_triangPts.push_back(wxPoint2DDouble(0.0, m_height / 2.0));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_inserted = <span class="keyword">true</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_switchRect.push_back(genRect); <span class="comment">// Push a general rectangle.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  UpdateSwitches();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_pfDirection = <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="class_load.html#aaef52b18cc53fa2db996fb9cad5db181"> 59</a></span> <span class="keywordtype">void</span> <a class="code" href="class_load.html#aaef52b18cc53fa2db996fb9cad5db181">Load::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword"></span>{</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  elementColour = m_offlineElementColour;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Draw Selection (layer 1).</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::vector<wxPoint2DDouble> selTriangPts;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  selTriangPts.push_back(m_triangPts[0] + m_position +</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  wxPoint2DDouble(-m_borderSize / scale, -m_borderSize / scale));</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  selTriangPts.push_back(m_triangPts[1] + m_position +</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  wxPoint2DDouble(m_borderSize / scale, -m_borderSize / scale));</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  selTriangPts.push_back(m_triangPts[2] + m_position + wxPoint2DDouble(0.0, m_borderSize / scale));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  glPushMatrix();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  DrawTriangle(selTriangPts);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  glPopMatrix();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// Draw node selection.</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// Draw Load (layer 2).</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  glLineWidth(1.5);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// Draw node.</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  DrawSwitches();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  DrawPowerFlowPts();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  std::vector<wxPoint2DDouble> triangPts;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  triangPts.push_back(m_triangPts[i] + m_position);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  glPushMatrix();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  DrawTriangle(triangPts);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  glPopMatrix();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="class_load.html#a46e9f2e0935ecca77b3a46568404d8e3"> 121</a></span> <span class="keywordtype">void</span> <a class="code" href="class_load.html#a46e9f2e0935ecca77b3a46568404d8e3">Load::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_angle += rotAngle;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_pointList[2] = RotateAtPosition(m_pointList[2], rotAngle);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_pointList[3] = RotateAtPosition(m_pointList[3], rotAngle);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="class_load.html#a25b4a3e553f8400114ac8effa11287da"> 134</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_load.html#a25b4a3e553f8400114ac8effa11287da">Load::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit Load"</span>));</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="class_load.html#a792367f35c97324328816fee156e5ecf"> 141</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_load.html#a792367f35c97324328816fee156e5ecf">Load::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="class_load_form.html">LoadForm</a>* loadForm = <span class="keyword">new</span> <a class="code" href="class_load_form.html">LoadForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(loadForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  loadForm->Destroy();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  loadForm->Destroy();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> Load::GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  data.activePower = data.activePower / systemPowerBase;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  data.activePower = (data.activePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  data.activePower = (data.activePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  data.reactivePower = data.reactivePower / systemPowerBase;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="class_load.html#a27309c24b2c70bde37ba6afbb9679da2"> 191</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_load.html#a27309c24b2c70bde37ba6afbb9679da2">Load::GetCopy</a>()</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="class_load.html">Load</a>* copy = <span class="keyword">new</span> <a class="code" href="class_load.html">Load</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="class_load.html#a00acfbf7dc907e5de79ceb4803632279"> 198</a></span> wxString <a class="code" href="class_load.html#a00acfbf7dc907e5de79ceb4803632279">Load::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="keyword"></span>{</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// TODO: Avoid power calculation.</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordtype">double</span> activePower = m_electricalData.activePower;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  activePower = 0.0;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  reactivePower = 0.0;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span>(m_online && m_electricalData.loadType == CONST_IMPEDANCE) {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  std::complex<double> v = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  reactivePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  activePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  tipText += _(<span class="stringliteral">"\nP = "</span>) + wxString::FromDouble(activePower, 5);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">switch</span>(m_electricalData.activePowerUnit) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  tipText += _(<span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  tipText += _(<span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  tipText += _(<span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_load_8h.html">Load.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> Load::Load() : <a class="code" href="class_shunt.html">Shunt</a>() {}</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Load::Load(wxString name) : <a class="code" href="class_shunt.html">Shunt</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> Load::~Load() {}</div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="class_load.html#ac9f449be9b919b36924a844324bf37ee"> 23</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_load.html#ac9f449be9b919b36924a844324bf37ee">Load::AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_position = parentPt + wxPoint2DDouble(0.0, 100.0); <span class="comment">// Shifts the position to the down of the bus.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_width = m_height = 20.0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_rect = wxRect2DDouble(m_position.m_x - 10.0, m_position.m_y - 10.0, m_width, m_height);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_pointList.push_back(parentPt);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -20.0));</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_pointList.push_back(m_position + wxPoint2DDouble(0.0, -10.0));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_triangPts.push_back(wxPoint2DDouble(-m_width / 2.0, -m_height / 2.0));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_triangPts.push_back(wxPoint2DDouble(m_width / 2.0, -m_height / 2.0));</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_triangPts.push_back(wxPoint2DDouble(0.0, m_height / 2.0));</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_inserted = <span class="keyword">true</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_switchRect.push_back(genRect); <span class="comment">// Push a general rectangle.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  UpdateSwitches();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_pfDirection = <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="class_load.html#aaef52b18cc53fa2db996fb9cad5db181"> 59</a></span> <span class="keywordtype">void</span> <a class="code" href="class_load.html#aaef52b18cc53fa2db996fb9cad5db181">Load::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword"></span>{</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  elementColour = m_offlineElementColour;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Draw Selection (layer 1).</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::vector<wxPoint2DDouble> selTriangPts;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  selTriangPts.push_back(m_triangPts[0] + m_position +</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  wxPoint2DDouble(-m_borderSize / scale, -m_borderSize / scale));</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  selTriangPts.push_back(m_triangPts[1] + m_position +</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  wxPoint2DDouble(m_borderSize / scale, -m_borderSize / scale));</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  selTriangPts.push_back(m_triangPts[2] + m_position + wxPoint2DDouble(0.0, m_borderSize / scale));</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  glPushMatrix();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  DrawTriangle(selTriangPts);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  glPopMatrix();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="comment">// Draw node selection.</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// Draw Load (layer 2).</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  glLineWidth(1.5);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// Draw node.</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  DrawSwitches();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  DrawPowerFlowPts();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  std::vector<wxPoint2DDouble> triangPts;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  triangPts.push_back(m_triangPts[i] + m_position);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  glPushMatrix();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  DrawTriangle(triangPts);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  glPopMatrix();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="class_load.html#a46e9f2e0935ecca77b3a46568404d8e3"> 121</a></span> <span class="keywordtype">void</span> <a class="code" href="class_load.html#a46e9f2e0935ecca77b3a46568404d8e3">Load::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_angle += rotAngle;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_pointList[2] = RotateAtPosition(m_pointList[2], rotAngle);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_pointList[3] = RotateAtPosition(m_pointList[3], rotAngle);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="class_load.html#a25b4a3e553f8400114ac8effa11287da"> 134</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_load.html#a25b4a3e553f8400114ac8effa11287da">Load::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit Load"</span>));</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="class_load.html#a792367f35c97324328816fee156e5ecf"> 141</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_load.html#a792367f35c97324328816fee156e5ecf">Load::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="class_load_form.html">LoadForm</a>* loadForm = <span class="keyword">new</span> <a class="code" href="class_load_form.html">LoadForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(loadForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  loadForm->Destroy();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  loadForm->Destroy();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> Load::GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  data.activePower = data.activePower / systemPowerBase;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  data.activePower = (data.activePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  data.activePower = (data.activePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  data.reactivePower = data.reactivePower / systemPowerBase;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="class_load.html#a27309c24b2c70bde37ba6afbb9679da2"> 191</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_load.html#a27309c24b2c70bde37ba6afbb9679da2">Load::GetCopy</a>()</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <a class="code" href="class_load.html">Load</a>* copy = <span class="keyword">new</span> <a class="code" href="class_load.html">Load</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="class_load.html#a00acfbf7dc907e5de79ceb4803632279"> 198</a></span> wxString <a class="code" href="class_load.html#a00acfbf7dc907e5de79ceb4803632279">Load::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="keyword"></span>{</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">// TODO: Avoid power calculation.</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordtype">double</span> activePower = m_electricalData.activePower;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  activePower = 0.0;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  reactivePower = 0.0;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span>(m_online && m_electricalData.loadType == CONST_IMPEDANCE) {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  std::complex<double> v = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  reactivePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  activePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  tipText += _(<span class="stringliteral">"\nP = "</span>) + wxString::FromDouble(activePower, 5);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">switch</span>(m_electricalData.activePowerUnit) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  tipText += _(<span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  tipText += _(<span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  tipText += _(<span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00052">Element.h:52</a></div></div> <div class="ttc" id="class_load_html_a46e9f2e0935ecca77b3a46568404d8e3"><div class="ttname"><a href="class_load.html#a46e9f2e0935ecca77b3a46568404d8e3">Load::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8cpp_source.html#l00121">Load.cpp:121</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00036">PowerElement.h:36</a></div></div> @@ -97,22 +97,23 @@ $(document).ready(function(){initNavTree('_load_8cpp_source.html','');}); <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00081">PowerElement.h:81</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00035">PowerElement.h:35</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="class_load_html_a27309c24b2c70bde37ba6afbb9679da2"><div class="ttname"><a href="class_load.html#a27309c24b2c70bde37ba6afbb9679da2">Load::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8cpp_source.html#l00191">Load.cpp:191</a></div></div> +<div class="ttc" id="_load_8h_html"><div class="ttname"><a href="_load_8h.html">Load.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> <div class="ttc" id="class_load_html_a25b4a3e553f8400114ac8effa11287da"><div class="ttname"><a href="class_load.html#a25b4a3e553f8400114ac8effa11287da">Load::GetContextMenu</a></div><div class="ttdeci">virtual bool GetContextMenu(wxMenu &menu)</div><div class="ttdoc">Get the element contex menu. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8cpp_source.html#l00134">Load.cpp:134</a></div></div> <div class="ttc" id="class_element_html_ac38d6707d08cb5c057032aa94b511a62"><div class="ttname"><a href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">Element::AddChild</a></div><div class="ttdeci">virtual void AddChild(Element *child)</div><div class="ttdoc">Add a child to the child list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00353">Element.cpp:353</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> <div class="ttc" id="class_load_html_aaef52b18cc53fa2db996fb9cad5db181"><div class="ttname"><a href="class_load.html#aaef52b18cc53fa2db996fb9cad5db181">Load::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8cpp_source.html#l00059">Load.cpp:59</a></div></div> <div class="ttc" id="struct_load_electrical_data_html"><div class="ttname"><a href="struct_load_electrical_data.html">LoadElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00026">Load.h:26</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00040">PowerElement.h:40</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> +<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdoc">Class to manage color of OpenGL. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> <div class="ttc" id="class_load_form_html"><div class="ttname"><a href="class_load_form.html">LoadForm</a></div><div class="ttdoc">Form to edit the load power data. </div><div class="ttdef"><b>Definition:</b> <a href="_load_form_8h_source.html#l00032">LoadForm.h:32</a></div></div> <div class="ttc" id="class_load_html_a00acfbf7dc907e5de79ceb4803632279"><div class="ttname"><a href="class_load.html#a00acfbf7dc907e5de79ceb4803632279">Load::GetTipText</a></div><div class="ttdeci">virtual wxString GetTipText() const</div><div class="ttdoc">Get the tip text. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8cpp_source.html#l00198">Load.cpp:198</a></div></div> <div class="ttc" id="class_load_html_ac9f449be9b919b36924a844324bf37ee"><div class="ttname"><a href="class_load.html#ac9f449be9b919b36924a844324bf37ee">Load::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_load_8cpp_source.html#l00023">Load.cpp:23</a></div></div> <div class="ttc" id="class_element_html_a536ad18a847dcc979c984b3cb287f238"><div class="ttname"><a href="class_element.html#a536ad18a847dcc979c984b3cb287f238">Element::GetPosition</a></div><div class="ttdeci">wxPoint2DDouble GetPosition() const</div><div class="ttdoc">Get the element position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00187">Element.h:187</a></div></div> -<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00024">Shunt.h:24</a></div></div> +<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdoc">Abstract class for shunt power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00031">Shunt.h:31</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00034">PowerElement.h:34</a></div></div> <div class="ttc" id="class_load_html_a792367f35c97324328816fee156e5ecf"><div class="ttname"><a href="class_load.html#a792367f35c97324328816fee156e5ecf">Load::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8cpp_source.html#l00141">Load.cpp:141</a></div></div> <div class="ttc" id="class_open_g_l_colour_html_a12119e58ae1bc7d6888224252695c066"><div class="ttname"><a href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">OpenGLColour::GetRGBA</a></div><div class="ttdeci">const GLdouble * GetRGBA() const</div><div class="ttdoc">Get colour in RGBA. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00101">Element.h:101</a></div></div> diff --git a/docs/doxygen/html/_load_8h.html b/docs/doxygen/html/_load_8h.html new file mode 100644 index 0000000..af11d9f --- /dev/null +++ b/docs/doxygen/html/_load_8h.html @@ -0,0 +1,126 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/Load.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_load_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#enum-members">Enumerations</a> </div> + <div class="headertitle"> +<div class="title">Load.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_load_form_8h_source.html">LoadForm.h</a>"</code><br /> +<code>#include "<a class="el" href="_shunt_8h_source.html">Shunt.h</a>"</code><br /> +</div> +<p><a href="_load_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_load_electrical_data.html">LoadElectricalData</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_load.html">Load</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Loas shunt power element. <a href="class_load.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr class="memitem:a23ef47ba052bffd629011885a72be6ae"><td class="memItemLeft" align="right" valign="top"><a id="a23ef47ba052bffd629011885a72be6ae"></a>enum  </td><td class="memItemRight" valign="bottom"><b>LoadType</b> { <b>CONST_POWER</b> = 0, +<b>CONST_IMPEDANCE</b> + }</td></tr> +<tr class="separator:a23ef47ba052bffd629011885a72be6ae"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_load_8h.html">Load.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_load_8h.js b/docs/doxygen/html/_load_8h.js new file mode 100644 index 0000000..31f1d49 --- /dev/null +++ b/docs/doxygen/html/_load_8h.js @@ -0,0 +1,9 @@ +var _load_8h = +[ + [ "LoadElectricalData", "struct_load_electrical_data.html", "struct_load_electrical_data" ], + [ "Load", "class_load.html", "class_load" ], + [ "LoadType", "_load_8h.html#a23ef47ba052bffd629011885a72be6ae", [ + [ "CONST_POWER", "_load_8h.html#a23ef47ba052bffd629011885a72be6aea050d3b412b1a323ad9b62e94a7e8386f", null ], + [ "CONST_IMPEDANCE", "_load_8h.html#a23ef47ba052bffd629011885a72be6aea3030768ede9894e4595833f464783de6", null ] + ] ] +];
\ No newline at end of file diff --git a/docs/doxygen/html/_load_8h_source.html b/docs/doxygen/html/_load_8h_source.html index 05f39b3..468482b 100644 --- a/docs/doxygen/html/_load_8h_source.html +++ b/docs/doxygen/html/_load_8h_source.html @@ -88,20 +88,21 @@ $(document).ready(function(){initNavTree('_load_8h_source.html','');}); <div class="title">Load.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef LOAD_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define LOAD_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_load_form_8h.html">LoadForm.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Shunt.h"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">enum</span> LoadType { CONST_POWER = 0, CONST_IMPEDANCE };</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="struct_load_electrical_data.html"> 26</a></span> <span class="keyword">struct </span><a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  wxString name;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> activePower = 100.0;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> reactivePower = 0.0;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  LoadType loadType = CONST_POWER;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> };</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_load.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_load.html">Load</a> : <span class="keyword">public</span> <a class="code" href="class_shunt.html">Shunt</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_load.html">Load</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <a class="code" href="class_load.html">Load</a>(wxString name);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  ~<a class="code" href="class_load.html">Load</a>();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> AddParent(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Rotate(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> GetElectricalData() { <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::vector<wxPoint2DDouble> m_triangPts;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> m_electricalData;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#endif // LOAD_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_load_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef LOAD_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define LOAD_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_load_form_8h.html">LoadForm.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_shunt_8h.html">Shunt.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">enum</span> LoadType { CONST_POWER = 0, CONST_IMPEDANCE };</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="struct_load_electrical_data.html"> 26</a></span> <span class="keyword">struct </span><a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  wxString name;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> activePower = 100.0;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> reactivePower = 0.0;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  LoadType loadType = CONST_POWER;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> };</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_load.html"> 42</a></span> <span class="keyword">class </span><a class="code" href="class_load.html">Load</a> : <span class="keyword">public</span> <a class="code" href="class_shunt.html">Shunt</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_load.html">Load</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_load.html">Load</a>(wxString name);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ~<a class="code" href="class_load.html">Load</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> AddParent(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Rotate(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> GetElectricalData() { <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  std::vector<wxPoint2DDouble> m_triangPts;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> m_electricalData;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> };</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#endif // LOAD_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="_shunt_8h_html"><div class="ttname"><a href="_shunt_8h.html">Shunt.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00036">PowerElement.h:36</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220cca"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a></div><div class="ttdeci">ElectricalUnit</div><div class="ttdoc">Electrical units. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00028">PowerElement.h:28</a></div></div> <div class="ttc" id="_load_form_8h_html"><div class="ttname"><a href="_load_form_8h.html">LoadForm.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> <div class="ttc" id="struct_load_electrical_data_html"><div class="ttname"><a href="struct_load_electrical_data.html">LoadElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00026">Load.h:26</a></div></div> -<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00024">Shunt.h:24</a></div></div> +<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdoc">Abstract class for shunt power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00031">Shunt.h:31</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>Load.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_load_8h.html">Load.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_load_form_8cpp_source.html b/docs/doxygen/html/_load_form_8cpp_source.html index fe5a754..ff86191 100644 --- a/docs/doxygen/html/_load_form_8cpp_source.html +++ b/docs/doxygen/html/_load_form_8cpp_source.html @@ -88,14 +88,15 @@ $(document).ready(function(){initNavTree('_load_form_8cpp_source.html','');}); <div class="title">LoadForm.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_load_form_8h.html">LoadForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_switching_form_8h.html">SwitchingForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "Load.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> LoadForm::LoadForm(wxWindow* parent, <a class="code" href="class_load.html">Load</a>* load) : <a class="code" href="class_load_form_base.html">LoadFormBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = load->GetElectricalData();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_textCtrlActivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Load::StringFromDouble</a>(data.activePower));</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choiceActivePower->SetSelection(0);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_choiceActivePower->SetSelection(1);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_choiceActivePower->SetSelection(2);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_choiceActivePower->SetSelection(3);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Load::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_choiceReactivePower->SetSelection(0);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_choiceReactivePower->SetSelection(1);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">switch</span>(data.loadType) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">case</span> CONST_POWER: {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_choiceType->SetSelection(0);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">case</span> CONST_IMPEDANCE: {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_choiceType->SetSelection(1);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_parent = parent;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_load = load;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> LoadForm::~LoadForm() {}</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keywordtype">void</span> LoadForm::OnOnButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keywordtype">void</span> LoadForm::OnStabilityButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_load);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  swForm.SetTitle(_(<span class="stringliteral">"Load: Switching"</span>));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  swForm.ShowModal();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="keywordtype">bool</span> LoadForm::ValidateData()</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span>(!m_load->DoubleFromString(m_parent, m_textCtrlActivePower->GetValue(), data.activePower,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Active power\"."</span>)))</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">switch</span>(m_choiceActivePower->GetSelection()) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(!m_load->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">switch</span>(m_choiceType->GetSelection()) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  data.loadType = CONST_POWER;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  data.loadType = CONST_IMPEDANCE;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  m_load->SetElectricalData(data);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> }</div><div class="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdoc">Form to edit the switching data of power elements for electromechanical transient studies...</div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00032">SwitchingForm.h:32</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_load_form_8h.html">LoadForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_switching_form_8h.html">SwitchingForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_load_8h.html">Load.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> LoadForm::LoadForm(wxWindow* parent, <a class="code" href="class_load.html">Load</a>* load) : <a class="code" href="class_load_form_base.html">LoadFormBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = load->GetElectricalData();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_textCtrlActivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Load::StringFromDouble</a>(data.activePower));</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choiceActivePower->SetSelection(0);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_choiceActivePower->SetSelection(1);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_choiceActivePower->SetSelection(2);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_choiceActivePower->SetSelection(3);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Load::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_choiceReactivePower->SetSelection(0);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_choiceReactivePower->SetSelection(1);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">switch</span>(data.loadType) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">case</span> CONST_POWER: {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_choiceType->SetSelection(0);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">case</span> CONST_IMPEDANCE: {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_choiceType->SetSelection(1);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_parent = parent;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_load = load;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> LoadForm::~LoadForm() {}</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="keywordtype">void</span> LoadForm::OnOnButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="keywordtype">void</span> LoadForm::OnStabilityButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_load);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  swForm.SetTitle(_(<span class="stringliteral">"Load: Switching"</span>));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  swForm.ShowModal();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="keywordtype">bool</span> LoadForm::ValidateData()</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span>(!m_load->DoubleFromString(m_parent, m_textCtrlActivePower->GetValue(), data.activePower,</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Active power\"."</span>)))</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">switch</span>(m_choiceActivePower->GetSelection()) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(!m_load->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">switch</span>(m_choiceType->GetSelection()) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  data.loadType = CONST_POWER;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  data.loadType = CONST_IMPEDANCE;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  m_load->SetElectricalData(data);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> }</div><div class="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdoc">Form to edit the switching data of power elements for electromechanical transient studies...</div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00032">SwitchingForm.h:32</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00036">PowerElement.h:36</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> <div class="ttc" id="_load_form_8h_html"><div class="ttname"><a href="_load_form_8h.html">LoadForm.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00035">PowerElement.h:35</a></div></div> +<div class="ttc" id="_load_8h_html"><div class="ttname"><a href="_load_8h.html">Load.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> <div class="ttc" id="_switching_form_8h_html"><div class="ttname"><a href="_switching_form_8h.html">SwitchingForm.h</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> <div class="ttc" id="struct_load_electrical_data_html"><div class="ttname"><a href="struct_load_electrical_data.html">LoadElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00026">Load.h:26</a></div></div> <div class="ttc" id="class_load_form_base_html"><div class="ttname"><a href="class_load_form_base.html">LoadFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00552">ElementForm.h:552</a></div></div> diff --git a/docs/doxygen/html/_load_form_8h_source.html b/docs/doxygen/html/_load_form_8h_source.html index 284ad8b..47a70cd 100644 --- a/docs/doxygen/html/_load_form_8h_source.html +++ b/docs/doxygen/html/_load_form_8h_source.html @@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('_load_form_8h_source.html','');}); </div><!--header--> <div class="contents"> <a href="_load_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef LOADFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define LOADFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">class </span><a class="code" href="class_load.html">Load</a>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_switching_form.html">SwitchingForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_load_form.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_load_form.html">LoadForm</a> : <span class="keyword">public</span> <a class="code" href="class_load_form_base.html">LoadFormBase</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_load_form.html">LoadForm</a>(wxWindow* parent, <a class="code" href="class_load.html">Load</a>* load);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_load_form.html">LoadForm</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); };</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOnButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStabilityButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_load.html">Load</a>* m_load = NULL;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#endif // LOADFORM_H</span></div><div class="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdoc">Form to edit the switching data of power elements for electromechanical transient studies...</div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00032">SwitchingForm.h:32</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> <div class="ttc" id="class_load_form_base_html"><div class="ttname"><a href="class_load_form_base.html">LoadFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00552">ElementForm.h:552</a></div></div> <div class="ttc" id="class_load_form_html"><div class="ttname"><a href="class_load_form.html">LoadForm</a></div><div class="ttdoc">Form to edit the load power data. </div><div class="ttdef"><b>Definition:</b> <a href="_load_form_8h_source.html#l00032">LoadForm.h:32</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_machines_8cpp_source.html b/docs/doxygen/html/_machines_8cpp_source.html index b780cef..51a16f2 100644 --- a/docs/doxygen/html/_machines_8cpp_source.html +++ b/docs/doxygen/html/_machines_8cpp_source.html @@ -88,9 +88,10 @@ $(document).ready(function(){initNavTree('_machines_8cpp_source.html','');}); <div class="title">Machines.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "Machines.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_control_element_container_8h.html">ControlElementContainer.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_solver_8h.html">ControlElementSolver.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> Machines::Machines() : <a class="code" href="class_power_element.html">PowerElement</a>() {}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> Machines::~Machines() {}</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3"> 25</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">Machines::AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_position = parentPt + wxPoint2DDouble(-100.0, 0.0); <span class="comment">// Shifts the position to the left of the bus.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_width = m_height = 50.0;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_rect = wxRect2DDouble(m_position.m_x - 25.0, m_position.m_y - 25.0, m_width, m_height);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_pointList.push_back(parentPt);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_pointList.push_back(m_position + wxPoint2DDouble(35.0, 0.0));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_pointList.push_back(m_position + wxPoint2DDouble(25.0, 0.0));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_inserted = <span class="keyword">true</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_switchRect.push_back(genRect); <span class="comment">// Push a general rectangle.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  UpdateSwitches();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="class_machines.html#af3279663c82de88e12f0487bfc633f7c"> 54</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#af3279663c82de88e12f0487bfc633f7c">Machines::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword"></span>{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  elementColour = m_offlineElementColour;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Draw Selection (layer 1).</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  DrawCircle(m_position, 25.0 + (m_borderSize + 1.5) / scale, 20, GL_POLYGON);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// Draw node selection.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// Draw Machines (layer 2).</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  glLineWidth(1.5);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// Draw node.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  DrawSwitches();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  DrawPowerFlowPts();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  DrawCircle(m_position, 25.0, 20, GL_POLYGON);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  DrawCircle(m_position, 25.0, 20);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// Draw machine symbol.</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  glLineWidth(2.0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  DrawSymbol();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keywordtype">void</span> Machines::UpdateSwitchesPosition()</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], m_pointList[2]);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_pointList[1] = m_pointList[0];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  UpdateSwitches();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44"> 111</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Machines::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size(); i++) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span>(!m_parentList[0]) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="class_machines.html#aeab8436c33f74a10e252b418028ec491"> 124</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#aeab8436c33f74a10e252b418028ec491">Machines::MoveNode</a>(<a class="code" href="class_element.html">Element</a>* element, wxPoint2DDouble position)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>(element) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(element == m_parentList[0]) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// Recalculate switches positions</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="class_machines.html#acbefe76cd5161b5684a27205b155e797"> 146</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#acbefe76cd5161b5684a27205b155e797">Machines::StartMove</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_moveStartPt = position;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_movePts = m_pointList;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_movePos = m_position;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="class_machines.html#a914faa054440402cad74c3b70f62ad92"> 153</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a914faa054440402cad74c3b70f62ad92">Machines::RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_pointList[0] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], rotAngle);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026"> 165</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">Machines::RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="class_machines.html#a63597b82a1db17a9e4aac9f1058d7dff"> 175</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#a63597b82a1db17a9e4aac9f1058d7dff">Machines::NodeContains</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span>(nodeRect.Contains(position)) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  m_activeNodeID = 1;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="class_machines.html#aed7664d5b85585fc13f4a1ad48457901"> 189</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#aed7664d5b85585fc13f4a1ad48457901">Machines::SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  m_parentList[0] = parent;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// Centralize the node on bus.</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  m_pointList[0] = parentPt;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="class_machines.html#a51d79bffa4471eb29c223aaa180839f7"> 216</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a51d79bffa4471eb29c223aaa180839f7">Machines::UpdateNodes</a>()</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span>(!m_parentList[0]->Intersects(nodeRect)) {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="class_machines.html#acff264f0c80d97a966ff97401f2f142a"> 232</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#acff264f0c80d97a966ff97401f2f142a">Machines::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_angle += rotAngle;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_pointList[2] = RotateAtPosition(m_pointList[2], rotAngle);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  m_pointList[3] = RotateAtPosition(m_pointList[3], rotAngle);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="keywordtype">void</span> Machines::UpdatePowerFlowArrowsPosition()</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  std::vector<wxPoint2DDouble> edges;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">switch</span>(m_pfDirection) {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>: {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  m_powerFlowArrow.clear();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a>: {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  edges.push_back(m_pointList[2]);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  edges.push_back(m_pointList[1]);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>: {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  edges.push_back(m_pointList[1]);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  edges.push_back(m_pointList[2]);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  CalculatePowerFlowPts(edges);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3"> 267</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3">Machines::SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  m_pfDirection = pfDirection;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_machines_8h.html">Machines.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_control_element_container_8h.html">ControlElementContainer.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_solver_8h.html">ControlElementSolver.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> Machines::Machines() : <a class="code" href="class_power_element.html">PowerElement</a>() {}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> Machines::~Machines() {}</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3"> 25</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">Machines::AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_position = parentPt + wxPoint2DDouble(-100.0, 0.0); <span class="comment">// Shifts the position to the left of the bus.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_width = m_height = 50.0;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_rect = wxRect2DDouble(m_position.m_x - 25.0, m_position.m_y - 25.0, m_width, m_height);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_pointList.push_back(parentPt);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_pointList.push_back(m_position + wxPoint2DDouble(35.0, 0.0));</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_pointList.push_back(m_position + wxPoint2DDouble(25.0, 0.0));</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_inserted = <span class="keyword">true</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_switchRect.push_back(genRect); <span class="comment">// Push a general rectangle.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  UpdateSwitches();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="class_machines.html#af3279663c82de88e12f0487bfc633f7c"> 54</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#af3279663c82de88e12f0487bfc633f7c">Machines::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword"></span>{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  elementColour = m_offlineElementColour;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="comment">// Draw Selection (layer 1).</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  DrawCircle(m_position, 25.0 + (m_borderSize + 1.5) / scale, 20, GL_POLYGON);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// Draw node selection.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="comment">// Draw Machines (layer 2).</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  glLineWidth(1.5);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// Draw node.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  DrawSwitches();</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  DrawPowerFlowPts();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  DrawCircle(m_position, 25.0, 20, GL_POLYGON);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  DrawCircle(m_position, 25.0, 20);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// Draw machine symbol.</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  glLineWidth(2.0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  DrawSymbol();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="keywordtype">void</span> Machines::UpdateSwitchesPosition()</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], m_pointList[2]);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_pointList[1] = m_pointList[0];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  UpdateSwitches();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44"> 111</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Machines::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size(); i++) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span>(!m_parentList[0]) {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="class_machines.html#aeab8436c33f74a10e252b418028ec491"> 124</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#aeab8436c33f74a10e252b418028ec491">Machines::MoveNode</a>(<a class="code" href="class_element.html">Element</a>* element, wxPoint2DDouble position)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>(element) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(element == m_parentList[0]) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// Recalculate switches positions</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="class_machines.html#acbefe76cd5161b5684a27205b155e797"> 146</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#acbefe76cd5161b5684a27205b155e797">Machines::StartMove</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_moveStartPt = position;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_movePts = m_pointList;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_movePos = m_position;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="class_machines.html#a914faa054440402cad74c3b70f62ad92"> 153</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a914faa054440402cad74c3b70f62ad92">Machines::RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_pointList[0] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], rotAngle);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026"> 165</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">Machines::RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="class_machines.html#a63597b82a1db17a9e4aac9f1058d7dff"> 175</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#a63597b82a1db17a9e4aac9f1058d7dff">Machines::NodeContains</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span>(nodeRect.Contains(position)) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  m_activeNodeID = 1;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="class_machines.html#aed7664d5b85585fc13f4a1ad48457901"> 189</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#aed7664d5b85585fc13f4a1ad48457901">Machines::SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  m_parentList[0] = parent;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// Centralize the node on bus.</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  m_pointList[0] = parentPt;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="class_machines.html#a51d79bffa4471eb29c223aaa180839f7"> 216</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a51d79bffa4471eb29c223aaa180839f7">Machines::UpdateNodes</a>()</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span>(!m_parentList[0]->Intersects(nodeRect)) {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="class_machines.html#acff264f0c80d97a966ff97401f2f142a"> 232</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#acff264f0c80d97a966ff97401f2f142a">Machines::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_angle += rotAngle;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_pointList[2] = RotateAtPosition(m_pointList[2], rotAngle);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  m_pointList[3] = RotateAtPosition(m_pointList[3], rotAngle);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="keywordtype">void</span> Machines::UpdatePowerFlowArrowsPosition()</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  std::vector<wxPoint2DDouble> edges;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">switch</span>(m_pfDirection) {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>: {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  m_powerFlowArrow.clear();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a>: {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  edges.push_back(m_pointList[2]);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  edges.push_back(m_pointList[1]);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>: {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  edges.push_back(m_pointList[1]);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  edges.push_back(m_pointList[2]);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  CalculatePowerFlowPts(edges);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3"> 267</a></span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3">Machines::SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection)</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  m_pfDirection = pfDirection;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> +<div class="ttc" id="_machines_8h_html"><div class="ttname"><a href="_machines_8h.html">Machines.h</a></div></div> <div class="ttc" id="class_machines_html_acbefe76cd5161b5684a27205b155e797"><div class="ttname"><a href="class_machines.html#acbefe76cd5161b5684a27205b155e797">Machines::StartMove</a></div><div class="ttdeci">virtual void StartMove(wxPoint2DDouble position)</div><div class="ttdoc">Update the element attributes related to the movement. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00146">Machines.cpp:146</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_machines_html_a2f7450283dd36f4fc0847dfd50385c44"><div class="ttname"><a href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Machines::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00111">Machines.cpp:111</a></div></div> <div class="ttc" id="class_element_html_a99b213010776b34a27eb814aff288a34"><div class="ttname"><a href="class_element.html#a99b213010776b34a27eb814aff288a34">Element::RotateAtPosition</a></div><div class="ttdeci">virtual wxPoint2DDouble RotateAtPosition(wxPoint2DDouble pointToRotate, double angle, bool degrees=true) const</div><div class="ttdoc">Rotate a point as element position being the origin. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00107">Element.cpp:107</a></div></div> <div class="ttc" id="class_element_html_a038dfd8452fe48ab04bc4e47820c148e"><div class="ttname"><a href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Element::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const =0</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div></div> @@ -107,11 +108,11 @@ $(document).ready(function(){initNavTree('_machines_8cpp_source.html','');}); <div class="ttc" id="_control_element_container_8h_html"><div class="ttname"><a href="_control_element_container_8h.html">ControlElementContainer.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00080">PowerElement.h:80</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00079">PowerElement.h:79</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> +<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdoc">Class to manage color of OpenGL. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> <div class="ttc" id="_control_element_solver_8h_html"><div class="ttname"><a href="_control_element_solver_8h.html">ControlElementSolver.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a></div><div class="ttdeci">PowerFlowDirection</div><div class="ttdoc">Direction of power flow arrows. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00078">PowerElement.h:78</a></div></div> <div class="ttc" id="class_machines_html_a002d852ddd0d73502a6bd819b5545026"><div class="ttname"><a href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">Machines::RemoveParent</a></div><div class="ttdeci">virtual void RemoveParent(Element *parent)</div><div class="ttdoc">Remove a parent. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00165">Machines.cpp:165</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> <div class="ttc" id="class_element_html_a536ad18a847dcc979c984b3cb287f238"><div class="ttname"><a href="class_element.html#a536ad18a847dcc979c984b3cb287f238">Element::GetPosition</a></div><div class="ttdeci">wxPoint2DDouble GetPosition() const</div><div class="ttdoc">Get the element position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00187">Element.h:187</a></div></div> <div class="ttc" id="class_machines_html_aeab8436c33f74a10e252b418028ec491"><div class="ttname"><a href="class_machines.html#aeab8436c33f74a10e252b418028ec491">Machines::MoveNode</a></div><div class="ttdeci">virtual void MoveNode(Element *element, wxPoint2DDouble position)</div><div class="ttdoc">Move a node. StartMove(wxPoint2DDouble position) before start moving. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00124">Machines.cpp:124</a></div></div> <div class="ttc" id="class_open_g_l_colour_html_a12119e58ae1bc7d6888224252695c066"><div class="ttname"><a href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">OpenGLColour::GetRGBA</a></div><div class="ttdeci">const GLdouble * GetRGBA() const</div><div class="ttdoc">Get colour in RGBA. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00101">Element.h:101</a></div></div> diff --git a/docs/doxygen/html/_machines_8h.html b/docs/doxygen/html/_machines_8h.html new file mode 100644 index 0000000..7c8209e --- /dev/null +++ b/docs/doxygen/html/_machines_8h.html @@ -0,0 +1,115 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/Machines.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_machines_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">Machines.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_power_element_8h_source.html">PowerElement.h</a>"</code><br /> +</div> +<p><a href="_machines_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_machines.html">Machines</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Abstract class for rotary machines power elements. <a href="class_machines.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_machines_8h.html">Machines.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_machines_8h_source.html b/docs/doxygen/html/_machines_8h_source.html index 9b7c76c..1310bfd 100644 --- a/docs/doxygen/html/_machines_8h_source.html +++ b/docs/doxygen/html/_machines_8h_source.html @@ -88,9 +88,9 @@ $(document).ready(function(){initNavTree('_machines_8h_source.html','');}); <div class="title">Machines.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef MACHINES_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define MACHINES_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_control_element_container.html">ControlElementContainer</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span><a class="code" href="class_control_element_solver.html">ControlElementSolver</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="class_machines.html"> 26</a></span> <span class="keyword">class </span><a class="code" href="class_machines.html">Machines</a> : <span class="keyword">public</span> <a class="code" href="class_power_element.html">PowerElement</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">enum</span> SyncMachineModel { SM_MODEL_1 = 0, SM_MODEL_2, SM_MODEL_3, SM_MODEL_4, SM_MODEL_5 };</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="class_machines.html">Machines</a>();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  ~<a class="code" href="class_machines.html">Machines</a>();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_machines.html#acda27b0ea8a7b0fb00d647d8744f346e"> 35</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#acda27b0ea8a7b0fb00d647d8744f346e">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#af3279663c82de88e12f0487bfc633f7c">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_machines.html#a0a825ccdbd5059f9ae9f869d4b6e3ec4"> 37</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#a0a825ccdbd5059f9ae9f869d4b6e3ec4">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#aeab8436c33f74a10e252b418028ec491">MoveNode</a>(<a class="code" href="class_element.html">Element</a>* element, wxPoint2DDouble position);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#acbefe76cd5161b5684a27205b155e797">StartMove</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a914faa054440402cad74c3b70f62ad92">RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#a63597b82a1db17a9e4aac9f1058d7dff">NodeContains</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#aed7664d5b85585fc13f4a1ad48457901">SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a51d79bffa4471eb29c223aaa180839f7">UpdateNodes</a>();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#acff264f0c80d97a966ff97401f2f142a">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSymbol()<span class="keyword"> const </span>{}</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> UpdateSwitchesPosition();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">void</span> UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">bool</span> m_inserted = <span class="keyword">false</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#endif // MACHINES_H</span></div><div class="ttc" id="class_machines_html_acda27b0ea8a7b0fb00d647d8744f346e"><div class="ttname"><a href="class_machines.html#acda27b0ea8a7b0fb00d647d8744f346e">Machines::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00035">Machines.h:35</a></div></div> +<a href="_machines_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef MACHINES_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define MACHINES_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_control_element_container.html">ControlElementContainer</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span><a class="code" href="class_control_element_solver.html">ControlElementSolver</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_machines.html"> 33</a></span> <span class="keyword">class </span><a class="code" href="class_machines.html">Machines</a> : <span class="keyword">public</span> <a class="code" href="class_power_element.html">PowerElement</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">enum</span> SyncMachineModel { SM_MODEL_1 = 0, SM_MODEL_2, SM_MODEL_3, SM_MODEL_4, SM_MODEL_5 };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_machines.html">Machines</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  ~<a class="code" href="class_machines.html">Machines</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_machines.html#acda27b0ea8a7b0fb00d647d8744f346e"> 42</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#acda27b0ea8a7b0fb00d647d8744f346e">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#af3279663c82de88e12f0487bfc633f7c">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="class_machines.html#a0a825ccdbd5059f9ae9f869d4b6e3ec4"> 44</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#a0a825ccdbd5059f9ae9f869d4b6e3ec4">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Move</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#aeab8436c33f74a10e252b418028ec491">MoveNode</a>(<a class="code" href="class_element.html">Element</a>* element, wxPoint2DDouble position);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#acbefe76cd5161b5684a27205b155e797">StartMove</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a914faa054440402cad74c3b70f62ad92">RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#a63597b82a1db17a9e4aac9f1058d7dff">NodeContains</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_machines.html#aed7664d5b85585fc13f4a1ad48457901">SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a51d79bffa4471eb29c223aaa180839f7">UpdateNodes</a>();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#acff264f0c80d97a966ff97401f2f142a">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSymbol()<span class="keyword"> const </span>{}</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_machines.html#a293cb955dcacaaebca564b8a91ce57d3">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordtype">void</span> UpdateSwitchesPosition();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">void</span> UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">bool</span> m_inserted = <span class="keyword">false</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#endif // MACHINES_H</span></div><div class="ttc" id="class_machines_html_acda27b0ea8a7b0fb00d647d8744f346e"><div class="ttname"><a href="class_machines.html#acda27b0ea8a7b0fb00d647d8744f346e">Machines::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00042">Machines.h:42</a></div></div> <div class="ttc" id="class_machines_html_acbefe76cd5161b5684a27205b155e797"><div class="ttname"><a href="class_machines.html#acbefe76cd5161b5684a27205b155e797">Machines::StartMove</a></div><div class="ttdeci">virtual void StartMove(wxPoint2DDouble position)</div><div class="ttdoc">Update the element attributes related to the movement. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00146">Machines.cpp:146</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_control_element_solver_html"><div class="ttname"><a href="class_control_element_solver.html">ControlElementSolver</a></div><div class="ttdoc">Solves in the time the control system. Can solve the control system directly from a ControlEditor or ...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00045">ControlElementSolver.h:45</a></div></div> <div class="ttc" id="class_machines_html_a2f7450283dd36f4fc0847dfd50385c44"><div class="ttname"><a href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Machines::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00111">Machines.cpp:111</a></div></div> <div class="ttc" id="class_machines_html_a63597b82a1db17a9e4aac9f1058d7dff"><div class="ttname"><a href="class_machines.html#a63597b82a1db17a9e4aac9f1058d7dff">Machines::NodeContains</a></div><div class="ttdeci">virtual bool NodeContains(wxPoint2DDouble position)</div><div class="ttdoc">Check if a node contains a point. If contains, set the attributes related to node movement...</div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00175">Machines.cpp:175</a></div></div> @@ -100,21 +100,21 @@ $(document).ready(function(){initNavTree('_machines_8h_source.html','');}); <div class="ttc" id="class_machines_html_aed7664d5b85585fc13f4a1ad48457901"><div class="ttname"><a href="class_machines.html#aed7664d5b85585fc13f4a1ad48457901">Machines::SetNodeParent</a></div><div class="ttdeci">virtual bool SetNodeParent(Element *parent)</div><div class="ttdoc">Set a perent to the node. If all conditions are met, a new parent are added to the element and the po...</div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00189">Machines.cpp:189</a></div></div> <div class="ttc" id="class_machines_html_a51d79bffa4471eb29c223aaa180839f7"><div class="ttname"><a href="class_machines.html#a51d79bffa4471eb29c223aaa180839f7">Machines::UpdateNodes</a></div><div class="ttdeci">virtual void UpdateNodes()</div><div class="ttdoc">Update the nodes according to the parents. If a parent is removed, use this method. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00216">Machines.cpp:216</a></div></div> <div class="ttc" id="class_control_element_container_html"><div class="ttname"><a href="class_control_element_container.html">ControlElementContainer</a></div><div class="ttdoc">Class that can contain all control elements. Can identify (using RTTI) the elements from a generic li...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00045">ControlElementContainer.h:45</a></div></div> -<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div><div class="ttdoc">Switching data of power elements. </div></div> +<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div></div> <div class="ttc" id="class_machines_html_acff264f0c80d97a966ff97401f2f142a"><div class="ttname"><a href="class_machines.html#acff264f0c80d97a966ff97401f2f142a">Machines::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00232">Machines.cpp:232</a></div></div> <div class="ttc" id="class_machines_html_af3279663c82de88e12f0487bfc633f7c"><div class="ttname"><a href="class_machines.html#af3279663c82de88e12f0487bfc633f7c">Machines::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00054">Machines.cpp:54</a></div></div> -<div class="ttc" id="class_machines_html_a0a825ccdbd5059f9ae9f869d4b6e3ec4"><div class="ttname"><a href="class_machines.html#a0a825ccdbd5059f9ae9f869d4b6e3ec4">Machines::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00037">Machines.h:37</a></div></div> -<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00026">Machines.h:26</a></div></div> +<div class="ttc" id="class_machines_html_a0a825ccdbd5059f9ae9f869d4b6e3ec4"><div class="ttname"><a href="class_machines.html#a0a825ccdbd5059f9ae9f869d4b6e3ec4">Machines::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00044">Machines.h:44</a></div></div> +<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdoc">Abstract class for rotary machines power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00033">Machines.h:33</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a></div><div class="ttdeci">PowerFlowDirection</div><div class="ttdoc">Direction of power flow arrows. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00078">PowerElement.h:78</a></div></div> <div class="ttc" id="class_machines_html_a002d852ddd0d73502a6bd819b5545026"><div class="ttname"><a href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">Machines::RemoveParent</a></div><div class="ttdeci">virtual void RemoveParent(Element *parent)</div><div class="ttdoc">Remove a parent. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00165">Machines.cpp:165</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> <div class="ttc" id="class_machines_html_aeab8436c33f74a10e252b418028ec491"><div class="ttname"><a href="class_machines.html#aeab8436c33f74a10e252b418028ec491">Machines::MoveNode</a></div><div class="ttdeci">virtual void MoveNode(Element *element, wxPoint2DDouble position)</div><div class="ttdoc">Move a node. StartMove(wxPoint2DDouble position) before start moving. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8cpp_source.html#l00124">Machines.cpp:124</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>Machines.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_machines_8h.html">Machines.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_main_frame_8cpp_source.html b/docs/doxygen/html/_main_frame_8cpp_source.html index 224579e..849dbb5 100644 --- a/docs/doxygen/html/_main_frame_8cpp_source.html +++ b/docs/doxygen/html/_main_frame_8cpp_source.html @@ -88,10 +88,12 @@ $(document).ready(function(){initNavTree('_main_frame_8cpp_source.html','');}); <div class="title">MainFrame.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_main_frame_8h.html">MainFrame.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "ArtMetro.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_workspace_8h.html">Workspace.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Line.h"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "Transformer.h"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "IndMotor.h"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "SyncMotor.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "Load.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "Inductor.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Capacitor.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="_file_handing_8h.html">FileHanding.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="_general_properties_form_8h.html">GeneralPropertiesForm.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="_simulations_settings_form_8h.html">SimulationsSettingsForm.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "PropertiesData.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="_chart_view_8h.html">ChartView.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="_data_report_8h.html">DataReport.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="_about_form_8h.html">AboutForm.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995"> 38</a></span> <a class="code" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame::MainFrame</a>() : <a class="code" href="class_main_frame_base.html">MainFrameBase</a>(NULL) {}</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_main_frame.html#ac3288e93c5b8682863574bc47c9e9ff8"> 39</a></span> <a class="code" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame::MainFrame</a>(wxWindow* parent, wxLocale* locale, <a class="code" href="class_properties_data.html">PropertiesData</a>* initProperties, wxString openPath)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  : <a class="code" href="class_main_frame_base.html">MainFrameBase</a>(parent)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_locale = locale;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_generalProperties = initProperties;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  Init();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span>(openPath != <span class="stringliteral">""</span>) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  EnableCurrentProjectRibbon();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_workspace.html">Workspace</a>* newWorkspace = <span class="keyword">new</span> <a class="code" href="class_workspace.html">Workspace</a>(<span class="keyword">this</span>, _(<span class="stringliteral">"Open project"</span>), this->GetStatusBar());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(newWorkspace);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span>(fileHandling.OpenProject(openPath)) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  newWorkspace->SetSavedPath(openPath);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_workspaceList.push_back(newWorkspace);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <span class="keyword">false</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_auiNotebook->AddPage(newWorkspace, newWorkspace->GetName(), <span class="keyword">true</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_auiNotebook->Layout();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  newWorkspace->Redraw();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  newWorkspace->SetJustOpened(<span class="keyword">true</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_projectNumber++;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11"> 69</a></span> <a class="code" href="class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11">MainFrame::~MainFrame</a>()</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// if(m_artMetro) delete m_artMetro;</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(m_addElementsMenu) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_addElementsMenu->Disconnect(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrame::OnAddElementsClick),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">delete</span> m_addElementsMenu;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span>(m_locale) <span class="keyword">delete</span> m_locale;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>(m_generalProperties) <span class="keyword">delete</span> m_generalProperties;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">void</span> MainFrame::Init()</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  this->SetSize(800, 600);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  CreateAddElementsMenu();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  EnableCurrentProjectRibbon(<span class="keyword">false</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_artMetro = <span class="keyword">new</span> <a class="code" href="classwx_ribbon_metro_art_provider.html">wxRibbonMetroArtProvider</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_ribbonBar->SetArtProvider(m_artMetro);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_ribbonBar->Realize();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  this->Layout();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keywordtype">void</span> MainFrame::EnableCurrentProjectRibbon(<span class="keywordtype">bool</span> enable)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_ADDELEMENT, enable);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  m_ribbonButtonBarReports->EnableButton(ID_RIBBON_CHARTS, enable);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_ribbonButtonBarCProject->EnableButton(ID_RIBBON_CLOSE, enable);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_ribbonButtonBarClipboard->EnableButton(ID_RIBBON_COPY, enable);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_ribbonButtonBarReports->EnableButton(ID_RIBBON_DATAREPORT, enable);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_DELETE, enable);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_ribbonButtonBarContinuous->EnableButton(ID_RIBBON_DISABLESOL, enable);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_DRAG, enable);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_ribbonButtonBarContinuous->EnableButton(ID_RIBBON_ENABLESOL, enable);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_FAULT, enable);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_FIT, enable);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_MOVE, enable);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_ribbonButtonBarClipboard->EnableButton(ID_RIBBON_PASTE, enable);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_POWERFLOW, enable);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_ribbonButtonBarClipboard->EnableButton(ID_RIBBON_REDO, enable);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_ribbonButtonBarContinuous->EnableButton(ID_RIBBON_RESETVOLT, enable);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_RUNSTAB, enable);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_ribbonButtonBarCProject->EnableButton(ID_RIBBON_SAVE, enable);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_ribbonButtonBarCProject->EnableButton(ID_RIBBON_SAVEAS, enable);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_SCPOWER, enable);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_PROJSETTINGS, enable);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_ribbonButtonBarReports->EnableButton(ID_RIBBON_SNAPSHOT, enable);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_SIMULSETTINGS, enable);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_ribbonButtonBarClipboard->EnableButton(ID_RIBBON_UNDO, enable);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_ROTATEC, enable);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_ROTATECC, enable);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keywordtype">void</span> MainFrame::CreateAddElementsMenu()</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_addElementsMenu = <span class="keyword">new</span> wxMenu();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  wxMenuItem* busElement =</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_BUS, _(<span class="stringliteral">"&Bus\tB"</span>), _(<span class="stringliteral">"Adds a bus at the circuit"</span>));</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// busElement->SetBitmap(wxArtProvider::GetBitmap(wxART_WARNING));</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  wxMenuItem* lineElement =</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_LINE, _(<span class="stringliteral">"&Line\tL"</span>), _(<span class="stringliteral">"Adds a power line at the circuit"</span>));</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  wxMenuItem* transformerElement = <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_TRANSFORMER, _(<span class="stringliteral">"&Transformer\tT"</span>),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  _(<span class="stringliteral">"Adds a transformer at the circuit"</span>));</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  wxMenuItem* generatorElement = <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_GENERATOR, _(<span class="stringliteral">"&Generator\tG"</span>),</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  _(<span class="stringliteral">"Adds a generator at the circuit"</span>));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  wxMenuItem* indMotorElement = <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_INDMOTOR, _(<span class="stringliteral">"&Induction motor\tI"</span>),</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  _(<span class="stringliteral">"Adds an induction motor at the circuit"</span>));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  wxMenuItem* syncCompElement =</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_SYNCCOMP, _(<span class="stringliteral">"&Synchronous compensator \tK"</span>),</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  _(<span class="stringliteral">"Adds an induction motor at the circuit"</span>));</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  wxMenuItem* loadElement =</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_LOAD, _(<span class="stringliteral">"&Load\tShift-L"</span>), _(<span class="stringliteral">"Adds a load at the circuit"</span>));</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  wxMenuItem* capacitorElement = <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_CAPACITOR, _(<span class="stringliteral">"&Capacitor\tShift-C"</span>),</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  _(<span class="stringliteral">"Adds a shunt capacitor at the circuit"</span>));</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  wxMenuItem* inductorElement = <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_INDUCTOR, _(<span class="stringliteral">"&Inductor\tShift-I"</span>),</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  _(<span class="stringliteral">"Adds a shunt inductor at the circuit"</span>));</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_addElementsMenu->Append(busElement);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  m_addElementsMenu->Append(lineElement);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  m_addElementsMenu->Append(transformerElement);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  m_addElementsMenu->Append(generatorElement);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  m_addElementsMenu->Append(indMotorElement);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_addElementsMenu->Append(syncCompElement);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_addElementsMenu->Append(loadElement);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  m_addElementsMenu->Append(capacitorElement);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_addElementsMenu->Append(inductorElement);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_addElementsMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, &MainFrame::OnAddElementsClick, <span class="keyword">this</span>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keywordtype">void</span> MainFrame::OnNewClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  EnableCurrentProjectRibbon();</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="class_workspace.html">Workspace</a>* newWorkspace =</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">new</span> <a class="code" href="class_workspace.html">Workspace</a>(<span class="keyword">this</span>, wxString::Format(_(<span class="stringliteral">"New project %d"</span>), m_projectNumber), this->GetStatusBar());</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_workspaceList.push_back(newWorkspace);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <span class="keyword">false</span>);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  m_auiNotebook->AddPage(newWorkspace, newWorkspace->GetName(), <span class="keyword">true</span>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  newWorkspace->Redraw();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_projectNumber++;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keywordtype">void</span> MainFrame::OnAboutClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="class_about_form.html">AboutForm</a> about(<span class="keyword">this</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  about.ShowModal();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="keywordtype">void</span> MainFrame::OnAddElementDropdown(wxRibbonButtonBarEvent& event) { <span class="keyword">event</span>.PopupMenu(m_addElementsMenu); }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keywordtype">void</span> MainFrame::OnChartsClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(<a class="code" href="class_workspace.html">Workspace</a>* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  std::vector<ElementPlotData> plotDataList;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keyword">auto</span> elementList = workspace->GetElementList();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span>(<a class="code" href="class_power_element.html">PowerElement</a>* powerElement = dynamic_cast<PowerElement*>(*it)) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a> plotData;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span>(powerElement->GetPlotData(plotData)) plotDataList.push_back(plotData);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="class_chart_view.html">ChartView</a>* cView = <span class="keyword">new</span> <a class="code" href="class_chart_view.html">ChartView</a>(workspace, plotDataList, workspace->GetStabilityTimeVector());</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  cView->Show();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="keywordtype">void</span> MainFrame::OnCloseClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keywordtype">void</span> MainFrame::OnCopyClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="keywordtype">void</span> MainFrame::OnDataReportClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">if</span>(<a class="code" href="class_workspace.html">Workspace</a>* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="class_data_report.html">DataReport</a>* dataReport = <span class="keyword">new</span> <a class="code" href="class_data_report.html">DataReport</a>(workspace, workspace);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  dataReport->Show();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="keywordtype">void</span> MainFrame::OnDeleteClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  workspace->DeleteSelectedElements();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keywordtype">void</span> MainFrame::OnDisableSolutionClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">if</span>(<a class="code" href="class_workspace.html">Workspace</a>* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  workspace->SetContinuousCalculationActive(<span class="keyword">false</span>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <span class="keyword">false</span>);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="keywordtype">void</span> MainFrame::OnDragClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="keywordtype">void</span> MainFrame::OnEnableSolutionClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span>(<a class="code" href="class_workspace.html">Workspace</a>* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  workspace->SetContinuousCalculationActive(<span class="keyword">true</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  workspace->RunStaticStudies();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">false</span>);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="keywordtype">void</span> MainFrame::OnExpImpClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="keywordtype">void</span> MainFrame::OnFaultClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">if</span>(<a class="code" href="class_workspace.html">Workspace</a>* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  workspace->RunFault();</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="keywordtype">void</span> MainFrame::OnFitClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  workspace->Fit();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="keywordtype">void</span> MainFrame::OnMoveClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keyword">auto</span> elementList = workspace->GetAllElements();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="comment">// Calculate the average position of selected elements.</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  wxPoint2DDouble averagePos(0, 0);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordtype">int</span> numSelElements = 0;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  averagePos += element-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  numSelElements++;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  averagePos = wxPoint2DDouble(averagePos.m_x / <span class="keywordtype">double</span>(numSelElements), averagePos.m_y / <span class="keywordtype">double</span>(numSelElements));</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="comment">// Set the move position to the average of selected elements.</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(averagePos);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  workspace->SetWorkspaceMode(Workspace::MODE_MOVE_ELEMENT);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="keywordtype">void</span> MainFrame::OnOpenClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  wxFileDialog openFileDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Open PSP file"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>, <span class="stringliteral">"PSP files (*.psp)|*.psp"</span>,</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  wxFD_OPEN | wxFD_FILE_MUST_EXIST);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">if</span>(openFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  wxFileName fileName(openFileDialog.GetPath());</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  EnableCurrentProjectRibbon();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="class_workspace.html">Workspace</a>* newWorkspace = <span class="keyword">new</span> <a class="code" href="class_workspace.html">Workspace</a>(<span class="keyword">this</span>, _(<span class="stringliteral">"Open project"</span>), this->GetStatusBar());</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(newWorkspace);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span>(fileHandling.OpenProject(fileName)) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  newWorkspace->SetSavedPath(fileName);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  m_workspaceList.push_back(newWorkspace);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <span class="keyword">false</span>);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  m_auiNotebook->AddPage(newWorkspace, newWorkspace->GetName(), <span class="keyword">true</span>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  m_auiNotebook->Layout();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  newWorkspace->Redraw();</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  newWorkspace->SetJustOpened(<span class="keyword">true</span>);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  m_projectNumber++;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to open the selected file."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">delete</span> newWorkspace;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="keywordtype">void</span> MainFrame::OnPSPGuideClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="keywordtype">void</span> MainFrame::OnPasteClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="keywordtype">void</span> MainFrame::OnPowerFlowClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  workspace->RunPowerFlow();</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="keywordtype">void</span> MainFrame::OnRedoClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="keywordtype">void</span> MainFrame::OnResetVoltagesClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="keywordtype">void</span> MainFrame::OnRunStabilityClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  workspace->RunStability();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="keywordtype">void</span> MainFrame::OnSCPowerClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  workspace->RunSCPower();</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="keywordtype">void</span> MainFrame::OnSaveAsClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(workspace);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  wxFileDialog saveFileDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Save PSP file"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>, <span class="stringliteral">"PSP files (*.psp)|*.psp"</span>,</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  fileHandling.SaveProject(saveFileDialog.GetPath());</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  wxFileName fileName(saveFileDialog.GetPath());</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  workspace->SetName(fileName.GetName());</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  m_auiNotebook->SetPageText(m_auiNotebook->GetPageIndex(workspace), workspace->GetName());</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  workspace->SetSavedPath(fileName);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="keywordtype">void</span> MainFrame::OnSaveClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(workspace);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">if</span>(workspace->GetSavedPath().IsOk()) {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  fileHandling.SaveProject(workspace->GetSavedPath());</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  wxFileDialog saveFileDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Save PSP file"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>, <span class="stringliteral">"PSP files (*.psp)|*.psp"</span>,</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  fileHandling.SaveProject(saveFileDialog.GetPath());</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  wxFileName fileName(saveFileDialog.GetPath());</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  workspace->SetName(fileName.GetName());</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  m_auiNotebook->SetPageText(m_auiNotebook->GetPageIndex(workspace), workspace->GetName());</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  workspace->SetSavedPath(fileName);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="keywordtype">void</span> MainFrame::OnSnapshotClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="keywordtype">void</span> MainFrame::OnUndoClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="keywordtype">void</span> MainFrame::OnAddElementsClick(wxCommandEvent& event)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">if</span>(workspace->GetWorkspaceMode() != Workspace::MODE_INSERT) {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keyword">auto</span> elementList = workspace->GetElementList();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  wxString statusBarText = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordtype">bool</span> newElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">switch</span>(event.GetId()) {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">case</span> ID_ADDMENU_BUS: {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <a class="code" href="class_bus.html">Bus</a>* newBus = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble(0, 0),</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  wxString::Format(_(<span class="stringliteral">"Bus %d"</span>), workspace->GetElementNumber(ID_BUS)));</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  workspace->IncrementElementNumber(ID_BUS);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  elementList.push_back(newBus);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  statusBarText = _(<span class="stringliteral">"Insert Bus: Click to insert, ESC to cancel."</span>);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">case</span> ID_ADDMENU_LINE: {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="class_line.html">Line</a>* newLine = <span class="keyword">new</span> <a class="code" href="class_line.html">Line</a>(wxString::Format(_(<span class="stringliteral">"Line %d"</span>), workspace->GetElementNumber(ID_LINE)));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  elementList.push_back(newLine);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  workspace->IncrementElementNumber(ID_LINE);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  statusBarText = _(<span class="stringliteral">"Insert Line: Click on two buses, ESC to cancel."</span>);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">case</span> ID_ADDMENU_TRANSFORMER: {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="class_transformer.html">Transformer</a>* newTransformer = <span class="keyword">new</span> <a class="code" href="class_transformer.html">Transformer</a>(</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  wxString::Format(_(<span class="stringliteral">"Transformer %d"</span>), workspace->GetElementNumber(ID_TRANSFORMER)));</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  workspace->IncrementElementNumber(ID_TRANSFORMER);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  elementList.push_back(newTransformer);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  statusBarText = _(<span class="stringliteral">"Insert Transformer: Click on two buses, ESC to cancel."</span>);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">case</span> ID_ADDMENU_GENERATOR: {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* newGenerator = <span class="keyword">new</span> <a class="code" href="class_sync_generator.html">SyncGenerator</a>(</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  wxString::Format(_(<span class="stringliteral">"Generator %d"</span>), workspace->GetElementNumber(ID_SYNCGENERATOR)));</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  workspace->IncrementElementNumber(ID_SYNCGENERATOR);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  elementList.push_back(newGenerator);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  statusBarText = _(<span class="stringliteral">"Insert Generator: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">case</span> ID_ADDMENU_LOAD: {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="class_load.html">Load</a>* newLoad = <span class="keyword">new</span> <a class="code" href="class_load.html">Load</a>(wxString::Format(_(<span class="stringliteral">"Load %d"</span>), workspace->GetElementNumber(ID_LOAD)));</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  workspace->IncrementElementNumber(ID_LOAD);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  elementList.push_back(newLoad);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  statusBarText = _(<span class="stringliteral">"Insert Load: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">case</span> ID_ADDMENU_CAPACITOR: {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* newCapacitor =</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keyword">new</span> <a class="code" href="class_capacitor.html">Capacitor</a>(wxString::Format(_(<span class="stringliteral">"Capacitor %d"</span>), workspace->GetElementNumber(ID_CAPACITOR)));</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  workspace->IncrementElementNumber(ID_CAPACITOR);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  elementList.push_back(newCapacitor);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  statusBarText = _(<span class="stringliteral">"Insert Capacitor: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">case</span> ID_ADDMENU_INDUCTOR: {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="class_inductor.html">Inductor</a>* newInductor =</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keyword">new</span> <a class="code" href="class_inductor.html">Inductor</a>(wxString::Format(_(<span class="stringliteral">"Inductor %d"</span>), workspace->GetElementNumber(ID_INDUCTOR)));</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  workspace->IncrementElementNumber(ID_INDUCTOR);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  elementList.push_back(newInductor);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  statusBarText = _(<span class="stringliteral">"Insert Inductor: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">case</span> ID_ADDMENU_INDMOTOR: {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* newIndMotor = <span class="keyword">new</span> <a class="code" href="class_ind_motor.html">IndMotor</a>(</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  wxString::Format(_(<span class="stringliteral">"Induction motor %d"</span>), workspace->GetElementNumber(ID_INDMOTOR)));</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  workspace->IncrementElementNumber(ID_INDMOTOR);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  elementList.push_back(newIndMotor);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  statusBarText = _(<span class="stringliteral">"Insert Induction Motor: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">case</span> ID_ADDMENU_SYNCCOMP: {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* newSyncCondenser = <span class="keyword">new</span> <a class="code" href="class_sync_motor.html">SyncMotor</a>(</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  wxString::Format(_(<span class="stringliteral">"Synchronous condenser %d"</span>), workspace->GetElementNumber(ID_SYNCMOTOR)));</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  workspace->IncrementElementNumber(ID_SYNCMOTOR);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  elementList.push_back(newSyncCondenser);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  statusBarText = _(<span class="stringliteral">"Insert Synchronous Condenser: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">if</span>(newElement) {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  workspace->SetElementList(elementList);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  workspace->SetWorkspaceMode(Workspace::MODE_INSERT);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  workspace->SetStatusBarText(statusBarText);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  workspace->Redraw();</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="keywordtype">void</span> MainFrame::NotebookPageClosed(wxAuiNotebookEvent& event)</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">if</span>(m_auiNotebook->GetPageCount() == 0) EnableCurrentProjectRibbon(<span class="keyword">false</span>);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="keywordtype">void</span> MainFrame::NotebookPageClosing(wxAuiNotebookEvent& event)</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keyword">auto</span> it = m_workspaceList.begin();</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">while</span>(it != m_workspaceList.end()) {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="keywordflow">if</span>(*it == m_auiNotebook->GetCurrentPage()) {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  m_workspaceList.erase(it);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  it++;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> </div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="keywordtype">void</span> MainFrame::OnRotClockClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  workspace->RotateSelectedElements();</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> </div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="keywordtype">void</span> MainFrame::OnRotCounterClockClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  workspace->RotateSelectedElements(<span class="keyword">false</span>);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="keywordtype">void</span> MainFrame::OnGeneralSettingsClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <a class="code" href="class_general_properties_form.html">GeneralPropertiesForm</a> genPropForm(<span class="keyword">this</span>, m_generalProperties);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  genPropForm.SetInitialSize();</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  genPropForm.ShowModal();</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> </div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="keywordtype">void</span> MainFrame::OnSimulationSettingsClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <a class="code" href="class_simulations_settings_form.html">SimulationsSettingsForm</a> simulSettingsForm(<span class="keyword">this</span>, workspace->GetProperties());</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  simulSettingsForm.SetInitialSize();</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  simulSettingsForm.ShowModal();</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> }</div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00057">PropertiesData.h:57</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_main_frame_8h.html">MainFrame.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "ArtMetro.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_workspace_8h.html">Workspace.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_bus_8h.html">Bus.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_line_8h.html">Line.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="_transformer_8h.html">Transformer.h</a>"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="_sync_generator_8h.html">SyncGenerator.h</a>"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="_ind_motor_8h.html">IndMotor.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="_sync_motor_8h.html">SyncMotor.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="_load_8h.html">Load.h</a>"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="_inductor_8h.html">Inductor.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="_capacitor_8h.html">Capacitor.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="_file_handing_8h.html">FileHanding.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="_general_properties_form_8h.html">GeneralPropertiesForm.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="_simulations_settings_form_8h.html">SimulationsSettingsForm.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="_properties_data_8h.html">PropertiesData.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="_chart_view_8h.html">ChartView.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="_data_report_8h.html">DataReport.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="_about_form_8h.html">AboutForm.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995"> 38</a></span> <a class="code" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame::MainFrame</a>() : <a class="code" href="class_main_frame_base.html">MainFrameBase</a>(NULL) {}</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_main_frame.html#ac3288e93c5b8682863574bc47c9e9ff8"> 39</a></span> <a class="code" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame::MainFrame</a>(wxWindow* parent, wxLocale* locale, <a class="code" href="class_properties_data.html">PropertiesData</a>* initProperties, wxString openPath)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  : <a class="code" href="class_main_frame_base.html">MainFrameBase</a>(parent)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_locale = locale;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_generalProperties = initProperties;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  Init();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span>(openPath != <span class="stringliteral">""</span>) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  EnableCurrentProjectRibbon();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_workspace.html">Workspace</a>* newWorkspace = <span class="keyword">new</span> <a class="code" href="class_workspace.html">Workspace</a>(<span class="keyword">this</span>, _(<span class="stringliteral">"Open project"</span>), this->GetStatusBar());</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(newWorkspace);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span>(fileHandling.OpenProject(openPath)) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  newWorkspace->SetSavedPath(openPath);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_workspaceList.push_back(newWorkspace);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <span class="keyword">false</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_auiNotebook->AddPage(newWorkspace, newWorkspace->GetName(), <span class="keyword">true</span>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_auiNotebook->Layout();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  newWorkspace->Redraw();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  newWorkspace->SetJustOpened(<span class="keyword">true</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_projectNumber++;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11"> 69</a></span> <a class="code" href="class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11">MainFrame::~MainFrame</a>()</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// if(m_artMetro) delete m_artMetro;</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(m_addElementsMenu) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_addElementsMenu->Disconnect(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrame::OnAddElementsClick),</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  NULL, <span class="keyword">this</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">delete</span> m_addElementsMenu;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span>(m_locale) <span class="keyword">delete</span> m_locale;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>(m_generalProperties) <span class="keyword">delete</span> m_generalProperties;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">void</span> MainFrame::Init()</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  this->SetSize(800, 600);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  CreateAddElementsMenu();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  EnableCurrentProjectRibbon(<span class="keyword">false</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_artMetro = <span class="keyword">new</span> <a class="code" href="classwx_ribbon_metro_art_provider.html">wxRibbonMetroArtProvider</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_ribbonBar->SetArtProvider(m_artMetro);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_ribbonBar->Realize();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  this->Layout();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keywordtype">void</span> MainFrame::EnableCurrentProjectRibbon(<span class="keywordtype">bool</span> enable)</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_ADDELEMENT, enable);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  m_ribbonButtonBarReports->EnableButton(ID_RIBBON_CHARTS, enable);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_ribbonButtonBarCProject->EnableButton(ID_RIBBON_CLOSE, enable);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_ribbonButtonBarClipboard->EnableButton(ID_RIBBON_COPY, enable);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_ribbonButtonBarReports->EnableButton(ID_RIBBON_DATAREPORT, enable);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_DELETE, enable);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_ribbonButtonBarContinuous->EnableButton(ID_RIBBON_DISABLESOL, enable);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_DRAG, enable);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_ribbonButtonBarContinuous->EnableButton(ID_RIBBON_ENABLESOL, enable);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_FAULT, enable);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_FIT, enable);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_MOVE, enable);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_ribbonButtonBarClipboard->EnableButton(ID_RIBBON_PASTE, enable);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_POWERFLOW, enable);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_ribbonButtonBarClipboard->EnableButton(ID_RIBBON_REDO, enable);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_ribbonButtonBarContinuous->EnableButton(ID_RIBBON_RESETVOLT, enable);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_RUNSTAB, enable);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_ribbonButtonBarCProject->EnableButton(ID_RIBBON_SAVE, enable);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_ribbonButtonBarCProject->EnableButton(ID_RIBBON_SAVEAS, enable);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_SCPOWER, enable);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_PROJSETTINGS, enable);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_ribbonButtonBarReports->EnableButton(ID_RIBBON_SNAPSHOT, enable);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_ribbonButtonBarSimulations->EnableButton(ID_RIBBON_SIMULSETTINGS, enable);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_ribbonButtonBarClipboard->EnableButton(ID_RIBBON_UNDO, enable);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_ROTATEC, enable);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_ribbonButtonBarCircuit->EnableButton(ID_RIBBON_ROTATECC, enable);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keywordtype">void</span> MainFrame::CreateAddElementsMenu()</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_addElementsMenu = <span class="keyword">new</span> wxMenu();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  wxMenuItem* busElement =</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_BUS, _(<span class="stringliteral">"&Bus\tB"</span>), _(<span class="stringliteral">"Adds a bus at the circuit"</span>));</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// busElement->SetBitmap(wxArtProvider::GetBitmap(wxART_WARNING));</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  wxMenuItem* lineElement =</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_LINE, _(<span class="stringliteral">"&Line\tL"</span>), _(<span class="stringliteral">"Adds a power line at the circuit"</span>));</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  wxMenuItem* transformerElement = <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_TRANSFORMER, _(<span class="stringliteral">"&Transformer\tT"</span>),</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  _(<span class="stringliteral">"Adds a transformer at the circuit"</span>));</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  wxMenuItem* generatorElement = <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_GENERATOR, _(<span class="stringliteral">"&Generator\tG"</span>),</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  _(<span class="stringliteral">"Adds a generator at the circuit"</span>));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  wxMenuItem* indMotorElement = <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_INDMOTOR, _(<span class="stringliteral">"&Induction motor\tI"</span>),</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  _(<span class="stringliteral">"Adds an induction motor at the circuit"</span>));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  wxMenuItem* syncCompElement =</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_SYNCCOMP, _(<span class="stringliteral">"&Synchronous compensator \tK"</span>),</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  _(<span class="stringliteral">"Adds an induction motor at the circuit"</span>));</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  wxMenuItem* loadElement =</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_LOAD, _(<span class="stringliteral">"&Load\tShift-L"</span>), _(<span class="stringliteral">"Adds a load at the circuit"</span>));</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  wxMenuItem* capacitorElement = <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_CAPACITOR, _(<span class="stringliteral">"&Capacitor\tShift-C"</span>),</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  _(<span class="stringliteral">"Adds a shunt capacitor at the circuit"</span>));</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  wxMenuItem* inductorElement = <span class="keyword">new</span> wxMenuItem(m_addElementsMenu, ID_ADDMENU_INDUCTOR, _(<span class="stringliteral">"&Inductor\tShift-I"</span>),</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  _(<span class="stringliteral">"Adds a shunt inductor at the circuit"</span>));</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_addElementsMenu->Append(busElement);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  m_addElementsMenu->Append(lineElement);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  m_addElementsMenu->Append(transformerElement);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  m_addElementsMenu->Append(generatorElement);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  m_addElementsMenu->Append(indMotorElement);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_addElementsMenu->Append(syncCompElement);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_addElementsMenu->Append(loadElement);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  m_addElementsMenu->Append(capacitorElement);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_addElementsMenu->Append(inductorElement);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  m_addElementsMenu->Bind(wxEVT_COMMAND_MENU_SELECTED, &MainFrame::OnAddElementsClick, <span class="keyword">this</span>);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keywordtype">void</span> MainFrame::OnNewClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  EnableCurrentProjectRibbon();</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="class_workspace.html">Workspace</a>* newWorkspace =</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">new</span> <a class="code" href="class_workspace.html">Workspace</a>(<span class="keyword">this</span>, wxString::Format(_(<span class="stringliteral">"New project %d"</span>), m_projectNumber), this->GetStatusBar());</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_workspaceList.push_back(newWorkspace);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <span class="keyword">false</span>);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  m_auiNotebook->AddPage(newWorkspace, newWorkspace->GetName(), <span class="keyword">true</span>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  newWorkspace->Redraw();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  m_projectNumber++;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keywordtype">void</span> MainFrame::OnAboutClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="class_about_form.html">AboutForm</a> about(<span class="keyword">this</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  about.ShowModal();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="keywordtype">void</span> MainFrame::OnAddElementDropdown(wxRibbonButtonBarEvent& event) { <span class="keyword">event</span>.PopupMenu(m_addElementsMenu); }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="keywordtype">void</span> MainFrame::OnChartsClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(<a class="code" href="class_workspace.html">Workspace</a>* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  std::vector<ElementPlotData> plotDataList;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keyword">auto</span> elementList = workspace->GetElementList();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span>(<a class="code" href="class_power_element.html">PowerElement</a>* powerElement = dynamic_cast<PowerElement*>(*it)) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a> plotData;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span>(powerElement->GetPlotData(plotData)) plotDataList.push_back(plotData);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="class_chart_view.html">ChartView</a>* cView = <span class="keyword">new</span> <a class="code" href="class_chart_view.html">ChartView</a>(workspace, plotDataList, workspace->GetStabilityTimeVector());</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  cView->Show();</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="keywordtype">void</span> MainFrame::OnCloseClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keywordtype">void</span> MainFrame::OnCopyClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="keywordtype">void</span> MainFrame::OnDataReportClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">if</span>(<a class="code" href="class_workspace.html">Workspace</a>* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="class_data_report.html">DataReport</a>* dataReport = <span class="keyword">new</span> <a class="code" href="class_data_report.html">DataReport</a>(workspace, workspace);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  dataReport->Show();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="keywordtype">void</span> MainFrame::OnDeleteClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  workspace->DeleteSelectedElements();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keywordtype">void</span> MainFrame::OnDisableSolutionClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">if</span>(<a class="code" href="class_workspace.html">Workspace</a>* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  workspace->SetContinuousCalculationActive(<span class="keyword">false</span>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <span class="keyword">false</span>);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="keywordtype">void</span> MainFrame::OnDragClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="keywordtype">void</span> MainFrame::OnEnableSolutionClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span>(<a class="code" href="class_workspace.html">Workspace</a>* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  workspace->SetContinuousCalculationActive(<span class="keyword">true</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  workspace->RunStaticStudies();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">false</span>);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="keywordtype">void</span> MainFrame::OnExpImpClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="keywordtype">void</span> MainFrame::OnFaultClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">if</span>(<a class="code" href="class_workspace.html">Workspace</a>* workspace = dynamic_cast<Workspace*>(m_auiNotebook->GetCurrentPage())) {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  workspace->RunFault();</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="keywordtype">void</span> MainFrame::OnFitClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  workspace->Fit();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="keywordtype">void</span> MainFrame::OnMoveClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keyword">auto</span> elementList = workspace->GetAllElements();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="comment">// Calculate the average position of selected elements.</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  wxPoint2DDouble averagePos(0, 0);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordtype">int</span> numSelElements = 0;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  averagePos += element-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  numSelElements++;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  averagePos = wxPoint2DDouble(averagePos.m_x / <span class="keywordtype">double</span>(numSelElements), averagePos.m_y / <span class="keywordtype">double</span>(numSelElements));</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="comment">// Set the move position to the average of selected elements.</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(averagePos);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  workspace->SetWorkspaceMode(Workspace::MODE_MOVE_ELEMENT);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="keywordtype">void</span> MainFrame::OnOpenClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  wxFileDialog openFileDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Open PSP file"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>, <span class="stringliteral">"PSP files (*.psp)|*.psp"</span>,</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  wxFD_OPEN | wxFD_FILE_MUST_EXIST);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">if</span>(openFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  wxFileName fileName(openFileDialog.GetPath());</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  EnableCurrentProjectRibbon();</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="class_workspace.html">Workspace</a>* newWorkspace = <span class="keyword">new</span> <a class="code" href="class_workspace.html">Workspace</a>(<span class="keyword">this</span>, _(<span class="stringliteral">"Open project"</span>), this->GetStatusBar());</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(newWorkspace);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span>(fileHandling.OpenProject(fileName)) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  newWorkspace->SetSavedPath(fileName);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  m_workspaceList.push_back(newWorkspace);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_DISABLESOL, <span class="keyword">true</span>);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  m_ribbonButtonBarContinuous->ToggleButton(ID_RIBBON_ENABLESOL, <span class="keyword">false</span>);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  m_auiNotebook->AddPage(newWorkspace, newWorkspace->GetName(), <span class="keyword">true</span>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  m_auiNotebook->Layout();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  newWorkspace->Redraw();</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  newWorkspace->SetJustOpened(<span class="keyword">true</span>);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  m_projectNumber++;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to open the selected file."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  msgDialog.ShowModal();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">delete</span> newWorkspace;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="keywordtype">void</span> MainFrame::OnPSPGuideClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="keywordtype">void</span> MainFrame::OnPasteClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="keywordtype">void</span> MainFrame::OnPowerFlowClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  workspace->RunPowerFlow();</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="keywordtype">void</span> MainFrame::OnRedoClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="keywordtype">void</span> MainFrame::OnResetVoltagesClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="keywordtype">void</span> MainFrame::OnRunStabilityClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  workspace->RunStability();</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="keywordtype">void</span> MainFrame::OnSCPowerClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  workspace->RunSCPower();</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="keywordtype">void</span> MainFrame::OnSaveAsClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(workspace);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  wxFileDialog saveFileDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Save PSP file"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>, <span class="stringliteral">"PSP files (*.psp)|*.psp"</span>,</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  fileHandling.SaveProject(saveFileDialog.GetPath());</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  wxFileName fileName(saveFileDialog.GetPath());</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  workspace->SetName(fileName.GetName());</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  m_auiNotebook->SetPageText(m_auiNotebook->GetPageIndex(workspace), workspace->GetName());</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  workspace->SetSavedPath(fileName);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="keywordtype">void</span> MainFrame::OnSaveClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="class_file_handing.html">FileHanding</a> fileHandling(workspace);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">if</span>(workspace->GetSavedPath().IsOk()) {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  fileHandling.SaveProject(workspace->GetSavedPath());</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  wxFileDialog saveFileDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Save PSP file"</span>), <span class="stringliteral">""</span>, <span class="stringliteral">""</span>, <span class="stringliteral">"PSP files (*.psp)|*.psp"</span>,</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  wxFD_SAVE | wxFD_OVERWRITE_PROMPT);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">if</span>(saveFileDialog.ShowModal() == wxID_CANCEL) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  fileHandling.SaveProject(saveFileDialog.GetPath());</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  wxFileName fileName(saveFileDialog.GetPath());</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  workspace->SetName(fileName.GetName());</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  m_auiNotebook->SetPageText(m_auiNotebook->GetPageIndex(workspace), workspace->GetName());</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  workspace->SetSavedPath(fileName);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="keywordtype">void</span> MainFrame::OnSnapshotClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="keywordtype">void</span> MainFrame::OnUndoClick(wxRibbonButtonBarEvent& event) {}</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="keywordtype">void</span> MainFrame::OnAddElementsClick(wxCommandEvent& event)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">if</span>(workspace->GetWorkspaceMode() != Workspace::MODE_INSERT) {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keyword">auto</span> elementList = workspace->GetElementList();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  wxString statusBarText = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordtype">bool</span> newElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">switch</span>(event.GetId()) {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">case</span> ID_ADDMENU_BUS: {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <a class="code" href="class_bus.html">Bus</a>* newBus = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(wxPoint2DDouble(0, 0),</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  wxString::Format(_(<span class="stringliteral">"Bus %d"</span>), workspace->GetElementNumber(ID_BUS)));</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  workspace->IncrementElementNumber(ID_BUS);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  elementList.push_back(newBus);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  statusBarText = _(<span class="stringliteral">"Insert Bus: Click to insert, ESC to cancel."</span>);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">case</span> ID_ADDMENU_LINE: {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="class_line.html">Line</a>* newLine = <span class="keyword">new</span> <a class="code" href="class_line.html">Line</a>(wxString::Format(_(<span class="stringliteral">"Line %d"</span>), workspace->GetElementNumber(ID_LINE)));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  elementList.push_back(newLine);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  workspace->IncrementElementNumber(ID_LINE);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  statusBarText = _(<span class="stringliteral">"Insert Line: Click on two buses, ESC to cancel."</span>);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">case</span> ID_ADDMENU_TRANSFORMER: {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <a class="code" href="class_transformer.html">Transformer</a>* newTransformer = <span class="keyword">new</span> <a class="code" href="class_transformer.html">Transformer</a>(</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  wxString::Format(_(<span class="stringliteral">"Transformer %d"</span>), workspace->GetElementNumber(ID_TRANSFORMER)));</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  workspace->IncrementElementNumber(ID_TRANSFORMER);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  elementList.push_back(newTransformer);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  statusBarText = _(<span class="stringliteral">"Insert Transformer: Click on two buses, ESC to cancel."</span>);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">case</span> ID_ADDMENU_GENERATOR: {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* newGenerator = <span class="keyword">new</span> <a class="code" href="class_sync_generator.html">SyncGenerator</a>(</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  wxString::Format(_(<span class="stringliteral">"Generator %d"</span>), workspace->GetElementNumber(ID_SYNCGENERATOR)));</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  workspace->IncrementElementNumber(ID_SYNCGENERATOR);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  elementList.push_back(newGenerator);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  statusBarText = _(<span class="stringliteral">"Insert Generator: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">case</span> ID_ADDMENU_LOAD: {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="class_load.html">Load</a>* newLoad = <span class="keyword">new</span> <a class="code" href="class_load.html">Load</a>(wxString::Format(_(<span class="stringliteral">"Load %d"</span>), workspace->GetElementNumber(ID_LOAD)));</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  workspace->IncrementElementNumber(ID_LOAD);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  elementList.push_back(newLoad);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  statusBarText = _(<span class="stringliteral">"Insert Load: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">case</span> ID_ADDMENU_CAPACITOR: {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* newCapacitor =</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keyword">new</span> <a class="code" href="class_capacitor.html">Capacitor</a>(wxString::Format(_(<span class="stringliteral">"Capacitor %d"</span>), workspace->GetElementNumber(ID_CAPACITOR)));</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  workspace->IncrementElementNumber(ID_CAPACITOR);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  elementList.push_back(newCapacitor);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  statusBarText = _(<span class="stringliteral">"Insert Capacitor: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">case</span> ID_ADDMENU_INDUCTOR: {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="class_inductor.html">Inductor</a>* newInductor =</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keyword">new</span> <a class="code" href="class_inductor.html">Inductor</a>(wxString::Format(_(<span class="stringliteral">"Inductor %d"</span>), workspace->GetElementNumber(ID_INDUCTOR)));</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  workspace->IncrementElementNumber(ID_INDUCTOR);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  elementList.push_back(newInductor);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  statusBarText = _(<span class="stringliteral">"Insert Inductor: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">case</span> ID_ADDMENU_INDMOTOR: {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* newIndMotor = <span class="keyword">new</span> <a class="code" href="class_ind_motor.html">IndMotor</a>(</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  wxString::Format(_(<span class="stringliteral">"Induction motor %d"</span>), workspace->GetElementNumber(ID_INDMOTOR)));</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  workspace->IncrementElementNumber(ID_INDMOTOR);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  elementList.push_back(newIndMotor);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  statusBarText = _(<span class="stringliteral">"Insert Induction Motor: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">case</span> ID_ADDMENU_SYNCCOMP: {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* newSyncCondenser = <span class="keyword">new</span> <a class="code" href="class_sync_motor.html">SyncMotor</a>(</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  wxString::Format(_(<span class="stringliteral">"Synchronous condenser %d"</span>), workspace->GetElementNumber(ID_SYNCMOTOR)));</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  workspace->IncrementElementNumber(ID_SYNCMOTOR);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  elementList.push_back(newSyncCondenser);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  statusBarText = _(<span class="stringliteral">"Insert Synchronous Condenser: Click on a buses, ESC to cancel."</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  newElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">if</span>(newElement) {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  workspace->SetElementList(elementList);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  workspace->SetWorkspaceMode(Workspace::MODE_INSERT);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  workspace->SetStatusBarText(statusBarText);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  workspace->Redraw();</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="keywordtype">void</span> MainFrame::NotebookPageClosed(wxAuiNotebookEvent& event)</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">if</span>(m_auiNotebook->GetPageCount() == 0) EnableCurrentProjectRibbon(<span class="keyword">false</span>);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="keywordtype">void</span> MainFrame::NotebookPageClosing(wxAuiNotebookEvent& event)</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span> {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keyword">auto</span> it = m_workspaceList.begin();</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">while</span>(it != m_workspaceList.end()) {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="keywordflow">if</span>(*it == m_auiNotebook->GetCurrentPage()) {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  m_workspaceList.erase(it);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  it++;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span> }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span> </div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="keywordtype">void</span> MainFrame::OnRotClockClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  workspace->RotateSelectedElements();</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span> }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> </div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="keywordtype">void</span> MainFrame::OnRotCounterClockClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  workspace->RotateSelectedElements(<span class="keyword">false</span>);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span> }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="keywordtype">void</span> MainFrame::OnGeneralSettingsClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span> {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <a class="code" href="class_general_properties_form.html">GeneralPropertiesForm</a> genPropForm(<span class="keyword">this</span>, m_generalProperties);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  genPropForm.SetInitialSize();</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  genPropForm.ShowModal();</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span> }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> </div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="keywordtype">void</span> MainFrame::OnSimulationSettingsClick(wxRibbonButtonBarEvent& event)</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span> {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <a class="code" href="class_workspace.html">Workspace</a>* workspace = <span class="keyword">static_cast<</span><a class="code" href="class_workspace.html">Workspace</a>*<span class="keyword">></span>(m_auiNotebook->GetCurrentPage());</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">if</span>(workspace) {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <a class="code" href="class_simulations_settings_form.html">SimulationsSettingsForm</a> simulSettingsForm(<span class="keyword">this</span>, workspace->GetProperties());</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  simulSettingsForm.SetInitialSize();</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  simulSettingsForm.ShowModal();</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span> }</div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdoc">General and simulation data manager. </div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00064">PropertiesData.h:64</a></div></div> <div class="ttc" id="class_main_frame_base_html"><div class="ttname"><a href="class_main_frame_base.html">MainFrameBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_main_frame_base_8h_source.html#l00041">MainFrameBase.h:41</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_workspace_8h_html"><div class="ttname"><a href="_workspace_8h.html">Workspace.h</a></div></div> +<div class="ttc" id="_properties_data_8h_html"><div class="ttname"><a href="_properties_data_8h.html">PropertiesData.h</a></div></div> +<div class="ttc" id="_transformer_8h_html"><div class="ttname"><a href="_transformer_8h.html">Transformer.h</a></div></div> <div class="ttc" id="class_main_frame_html_a0cfd88ece4836e0ea5430bd55370bf11"><div class="ttname"><a href="class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11">MainFrame::~MainFrame</a></div><div class="ttdeci">~MainFrame()</div><div class="ttdoc">Default destructor. </div><div class="ttdef"><b>Definition:</b> <a href="_main_frame_8cpp_source.html#l00069">MainFrame.cpp:69</a></div></div> <div class="ttc" id="_main_frame_8h_html"><div class="ttname"><a href="_main_frame_8h.html">MainFrame.h</a></div></div> <div class="ttc" id="_data_report_8h_html"><div class="ttname"><a href="_data_report_8h.html">DataReport.h</a></div></div> @@ -99,30 +101,38 @@ $(document).ready(function(){initNavTree('_main_frame_8cpp_source.html','');}); <div class="ttc" id="class_main_frame_html_a667b44053cae174a361cfd21124ef995"><div class="ttname"><a href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame::MainFrame</a></div><div class="ttdeci">MainFrame()</div><div class="ttdoc">Default constructor. </div><div class="ttdef"><b>Definition:</b> <a href="_main_frame_8cpp_source.html#l00038">MainFrame.cpp:38</a></div></div> <div class="ttc" id="class_file_handing_html"><div class="ttname"><a href="class_file_handing.html">FileHanding</a></div><div class="ttdoc">Save and opens the projects created on disk. </div><div class="ttdef"><b>Definition:</b> <a href="_file_handing_8h_source.html#l00043">FileHanding.h:43</a></div></div> <div class="ttc" id="class_general_properties_form_html"><div class="ttname"><a href="class_general_properties_form.html">GeneralPropertiesForm</a></div><div class="ttdoc">Form to edit the software&#39;s general data. </div><div class="ttdef"><b>Definition:</b> <a href="_general_properties_form_8h_source.html#l00035">GeneralPropertiesForm.h:35</a></div></div> +<div class="ttc" id="_sync_generator_8h_html"><div class="ttname"><a href="_sync_generator_8h.html">SyncGenerator.h</a></div></div> <div class="ttc" id="_chart_view_8h_html"><div class="ttname"><a href="_chart_view_8h.html">ChartView.h</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> -<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00056">ElementPlotData.h:56</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> +<div class="ttc" id="_sync_motor_8h_html"><div class="ttname"><a href="_sync_motor_8h.html">SyncMotor.h</a></div></div> +<div class="ttc" id="_bus_8h_html"><div class="ttname"><a href="_bus_8h.html">Bus.h</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> +<div class="ttc" id="_line_8h_html"><div class="ttname"><a href="_line_8h.html">Line.h</a></div></div> +<div class="ttc" id="_load_8h_html"><div class="ttname"><a href="_load_8h.html">Load.h</a></div></div> +<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00064">ElementPlotData.h:64</a></div></div> +<div class="ttc" id="_ind_motor_8h_html"><div class="ttname"><a href="_ind_motor_8h.html">IndMotor.h</a></div></div> <div class="ttc" id="classwx_ribbon_metro_art_provider_html"><div class="ttname"><a href="classwx_ribbon_metro_art_provider.html">wxRibbonMetroArtProvider</a></div><div class="ttdef"><b>Definition:</b> <a href="_art_metro_8h_source.html#l00028">ArtMetro.h:28</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> <div class="ttc" id="_file_handing_8h_html"><div class="ttname"><a href="_file_handing_8h.html">FileHanding.h</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> <div class="ttc" id="class_chart_view_html"><div class="ttname"><a href="class_chart_view.html">ChartView</a></div><div class="ttdoc">This class is responsible to manage the charts generated in the transient electromechanical studies...</div><div class="ttdef"><b>Definition:</b> <a href="_chart_view_8h_source.html#l00040">ChartView.h:40</a></div></div> <div class="ttc" id="_about_form_8h_html"><div class="ttname"><a href="_about_form_8h.html">AboutForm.h</a></div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> <div class="ttc" id="class_simulations_settings_form_html"><div class="ttname"><a href="class_simulations_settings_form.html">SimulationsSettingsForm</a></div><div class="ttdoc">Form to edit the simulation data. </div><div class="ttdef"><b>Definition:</b> <a href="_simulations_settings_form_8h_source.html#l00032">SimulationsSettingsForm.h:32</a></div></div> -<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00033">IndMotor.h:33</a></div></div> +<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdoc">Induction motor power element. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00040">IndMotor.h:40</a></div></div> <div class="ttc" id="class_element_html_ac42604083db300d20c010b50084de91b"><div class="ttname"><a href="class_element.html#ac42604083db300d20c010b50084de91b">Element::IsSelected</a></div><div class="ttdeci">bool IsSelected() const</div><div class="ttdoc">Checks if the element is selected. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00202">Element.h:202</a></div></div> +<div class="ttc" id="_inductor_8h_html"><div class="ttname"><a href="_inductor_8h.html">Inductor.h</a></div></div> <div class="ttc" id="_general_properties_form_8h_html"><div class="ttname"><a href="_general_properties_form_8h.html">GeneralPropertiesForm.h</a></div></div> -<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00031">Capacitor.h:31</a></div></div> +<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdoc">Shunt capactior power element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00038">Capacitor.h:38</a></div></div> <div class="ttc" id="class_data_report_html"><div class="ttname"><a href="class_data_report.html">DataReport</a></div><div class="ttdoc">Form that shows the results of power flow and fault calculations. </div><div class="ttdef"><b>Definition:</b> <a href="_data_report_8h_source.html#l00033">DataReport.h:33</a></div></div> <div class="ttc" id="class_element_html_a846a2a51780a99363b4d4b1812ca16b4"><div class="ttname"><a href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">Element::StartMove</a></div><div class="ttdeci">virtual void StartMove(wxPoint2DDouble position)</div><div class="ttdoc">Update the element attributes related to the movement. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00117">Element.cpp:117</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> <div class="ttc" id="class_element_html_a536ad18a847dcc979c984b3cb287f238"><div class="ttname"><a href="class_element.html#a536ad18a847dcc979c984b3cb287f238">Element::GetPosition</a></div><div class="ttdeci">wxPoint2DDouble GetPosition() const</div><div class="ttdoc">Get the element position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00187">Element.h:187</a></div></div> -<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00031">Inductor.h:31</a></div></div> +<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdoc">Inductor shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00038">Inductor.h:38</a></div></div> <div class="ttc" id="class_about_form_html"><div class="ttname"><a href="class_about_form.html">AboutForm</a></div><div class="ttdoc">Form to show some informations. </div><div class="ttdef"><b>Definition:</b> <a href="_about_form_8h_source.html#l00032">AboutForm.h:32</a></div></div> +<div class="ttc" id="_capacitor_8h_html"><div class="ttname"><a href="_capacitor_8h.html">Capacitor.h</a></div></div> <div class="ttc" id="class_workspace_html"><div class="ttname"><a href="class_workspace.html">Workspace</a></div><div class="ttdoc">This class manages the graphical and power elements. It is responsible for handling the user&#39;s intera...</div><div class="ttdef"><b>Definition:</b> <a href="_workspace_8h_source.html#l00081">Workspace.h:81</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_main_frame_8h_source.html b/docs/doxygen/html/_main_frame_8h_source.html index 2396190..3ac55b9 100644 --- a/docs/doxygen/html/_main_frame_8h_source.html +++ b/docs/doxygen/html/_main_frame_8h_source.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('_main_frame_8h_source.html','');}); <div class="title">MainFrame.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_main_frame_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef MAINFRAME_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define MAINFRAME_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <wx/menu.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <wx/msgdlg.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/filedlg.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "MainFrameBase.h"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">class </span><a class="code" href="class_main_frame_base.html">MainFrameBase</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">class </span><a class="code" href="classwx_ribbon_metro_art_provider.html">wxRibbonMetroArtProvider</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">class </span><a class="code" href="class_workspace.html">Workspace</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">class </span><a class="code" href="class_file_handing.html">FileHanding</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span><a class="code" href="class_general_properties_form.html">GeneralPropertiesForm</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span><a class="code" href="class_simulations_settings_form.html">SimulationsSettingsForm</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span><a class="code" href="class_chart_view.html">ChartView</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span><a class="code" href="class_data_report.html">DataReport</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span><a class="code" href="class_about_form.html">AboutForm</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">enum</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  ID_ADDMENU_BUS = 20000,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  ID_ADDMENU_LINE,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  ID_ADDMENU_TRANSFORMER,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ID_ADDMENU_GENERATOR,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  ID_ADDMENU_LOAD,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  ID_ADDMENU_CAPACITOR,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ID_ADDMENU_INDUCTOR,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ID_ADDMENU_INDMOTOR,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ID_ADDMENU_SYNCCOMP</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="class_main_frame.html"> 57</a></span> <span class="keyword">class </span><a class="code" href="class_main_frame.html">MainFrame</a> : <span class="keyword">public</span> <a class="code" href="class_main_frame_base.html">MainFrameBase</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame</a>(wxWindow* parent, wxLocale* locale, <a class="code" href="class_properties_data.html">PropertiesData</a>* initProperties, wxString openPath = <span class="stringliteral">""</span>);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11">~MainFrame</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnGeneralSettingsClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSimulationSettingsClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRotClockClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRotCounterClockClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> NotebookPageClosed(wxAuiNotebookEvent& event);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> NotebookPageClosing(wxAuiNotebookEvent& event);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnAboutClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnAddElementDropdown(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnChartsClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCloseClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCopyClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDataReportClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDeleteClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDisableSolutionClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDragClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnEnableSolutionClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnExitClick(wxRibbonButtonBarEvent& event) { this->Close(); };</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnExpImpClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFaultClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFitClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMoveClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOpenClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPSPGuideClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPasteClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPowerFlowClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRedoClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnResetVoltagesClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRunStabilityClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSCPowerClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSaveAsClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSaveClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSnapshotClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnUndoClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnNewClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  std::vector<Workspace*> m_workspaceList;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">int</span> m_projectNumber = 1;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classwx_ribbon_metro_art_provider.html">wxRibbonMetroArtProvider</a>* m_artMetro = NULL;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  wxMenu* m_addElementsMenu = NULL;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  wxLocale* m_locale = NULL;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>* m_generalProperties = NULL;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> Init();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">void</span> EnableCurrentProjectRibbon(<span class="keywordtype">bool</span> enable = <span class="keyword">true</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordtype">void</span> CreateAddElementsMenu();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">void</span> OnAddElementsClick(wxCommandEvent& event);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> };</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">#endif // MAINFRAME_H</span></div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00057">PropertiesData.h:57</a></div></div> +<a href="_main_frame_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef MAINFRAME_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define MAINFRAME_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <wx/menu.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <wx/msgdlg.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/filedlg.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "MainFrameBase.h"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">class </span><a class="code" href="class_main_frame_base.html">MainFrameBase</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">class </span><a class="code" href="classwx_ribbon_metro_art_provider.html">wxRibbonMetroArtProvider</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">class </span><a class="code" href="class_workspace.html">Workspace</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">class </span><a class="code" href="class_file_handing.html">FileHanding</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span><a class="code" href="class_general_properties_form.html">GeneralPropertiesForm</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span><a class="code" href="class_simulations_settings_form.html">SimulationsSettingsForm</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span><a class="code" href="class_chart_view.html">ChartView</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span><a class="code" href="class_data_report.html">DataReport</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span><a class="code" href="class_about_form.html">AboutForm</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">enum</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  ID_ADDMENU_BUS = 20000,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  ID_ADDMENU_LINE,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  ID_ADDMENU_TRANSFORMER,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  ID_ADDMENU_GENERATOR,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  ID_ADDMENU_LOAD,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  ID_ADDMENU_CAPACITOR,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  ID_ADDMENU_INDUCTOR,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ID_ADDMENU_INDMOTOR,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  ID_ADDMENU_SYNCCOMP</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="class_main_frame.html"> 57</a></span> <span class="keyword">class </span><a class="code" href="class_main_frame.html">MainFrame</a> : <span class="keyword">public</span> <a class="code" href="class_main_frame_base.html">MainFrameBase</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame</a>(wxWindow* parent, wxLocale* locale, <a class="code" href="class_properties_data.html">PropertiesData</a>* initProperties, wxString openPath = <span class="stringliteral">""</span>);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11">~MainFrame</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnGeneralSettingsClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSimulationSettingsClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRotClockClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRotCounterClockClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> NotebookPageClosed(wxAuiNotebookEvent& event);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> NotebookPageClosing(wxAuiNotebookEvent& event);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnAboutClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnAddElementDropdown(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnChartsClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCloseClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCopyClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDataReportClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDeleteClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDisableSolutionClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDragClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnEnableSolutionClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnExitClick(wxRibbonButtonBarEvent& event) { this->Close(); };</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnExpImpClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFaultClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFitClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMoveClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOpenClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPSPGuideClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPasteClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPowerFlowClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRedoClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnResetVoltagesClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRunStabilityClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSCPowerClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSaveAsClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSaveClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSnapshotClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnUndoClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnNewClick(wxRibbonButtonBarEvent& event);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  std::vector<Workspace*> m_workspaceList;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">int</span> m_projectNumber = 1;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classwx_ribbon_metro_art_provider.html">wxRibbonMetroArtProvider</a>* m_artMetro = NULL;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  wxMenu* m_addElementsMenu = NULL;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  wxLocale* m_locale = NULL;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>* m_generalProperties = NULL;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> Init();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">void</span> EnableCurrentProjectRibbon(<span class="keywordtype">bool</span> enable = <span class="keyword">true</span>);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordtype">void</span> CreateAddElementsMenu();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">void</span> OnAddElementsClick(wxCommandEvent& event);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> };</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">#endif // MAINFRAME_H</span></div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdoc">General and simulation data manager. </div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00064">PropertiesData.h:64</a></div></div> <div class="ttc" id="class_main_frame_base_html"><div class="ttname"><a href="class_main_frame_base.html">MainFrameBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_main_frame_base_8h_source.html#l00041">MainFrameBase.h:41</a></div></div> <div class="ttc" id="class_main_frame_html_a0cfd88ece4836e0ea5430bd55370bf11"><div class="ttname"><a href="class_main_frame.html#a0cfd88ece4836e0ea5430bd55370bf11">MainFrame::~MainFrame</a></div><div class="ttdeci">~MainFrame()</div><div class="ttdoc">Default destructor. </div><div class="ttdef"><b>Definition:</b> <a href="_main_frame_8cpp_source.html#l00069">MainFrame.cpp:69</a></div></div> <div class="ttc" id="class_main_frame_html_a667b44053cae174a361cfd21124ef995"><div class="ttname"><a href="class_main_frame.html#a667b44053cae174a361cfd21124ef995">MainFrame::MainFrame</a></div><div class="ttdeci">MainFrame()</div><div class="ttdoc">Default constructor. </div><div class="ttdef"><b>Definition:</b> <a href="_main_frame_8cpp_source.html#l00038">MainFrame.cpp:38</a></div></div> diff --git a/docs/doxygen/html/_multiplier_8cpp_source.html b/docs/doxygen/html/_multiplier_8cpp_source.html index f60bfff..ca5ebdd 100644 --- a/docs/doxygen/html/_multiplier_8cpp_source.html +++ b/docs/doxygen/html/_multiplier_8cpp_source.html @@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('_multiplier_8cpp_source.html','');}); </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_multiplier_8h.html">Multiplier.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_connection_line_8h.html">ConnectionLine.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Multiplier::Multiplier(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_width = m_height = 36.0;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <a class="code" href="class_node.html">Node</a>* nodeIn1 = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-18, -9), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  nodeIn1->StartMove(m_position);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <a class="code" href="class_node.html">Node</a>* nodeIn2 = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-18, 9), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  nodeIn2->StartMove(m_position);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <a class="code" href="class_node.html">Node</a>* nodeOut = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(18, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_nodeList.push_back(nodeIn1);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_nodeList.push_back(nodeIn2);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> Multiplier::~Multiplier() {}</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_multiplier.html#ae854fd981a98aca93b286081cc9c19f3"> 37</a></span> <span class="keywordtype">void</span> <a class="code" href="class_multiplier.html#ae854fd981a98aca93b286081cc9c19f3">Multiplier::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword"></span>{</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  glLineWidth(1.0);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  DrawRectangle(m_position, m_width + borderSize, m_height + borderSize);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="comment">// Plot x.</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  glLineWidth(2.0);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  std::vector<wxPoint2DDouble> xSymbol;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  xSymbol.push_back(m_position + wxPoint2DDouble(-5, -5));</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  xSymbol.push_back(m_position + wxPoint2DDouble(5, 5));</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  xSymbol.push_back(m_position + wxPoint2DDouble(-5, 5));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  xSymbol.push_back(m_position + wxPoint2DDouble(5, -5));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  glColor4d(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  DrawLine(xSymbol, GL_LINES);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  DrawNodes();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="class_multiplier.html#ae01f155ed56925cb87d71a860882a3a1"> 64</a></span> <span class="keywordtype">void</span> <a class="code" href="class_multiplier.html#ae01f155ed56925cb87d71a860882a3a1">Multiplier::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_angle += 90.0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_angle -= 90.0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_angle = 0.0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_angle = 270.0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  UpdatePoints();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keywordtype">void</span> Multiplier::UpdatePoints()</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-18, -9));</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-18, 9));</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_nodeList[2]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(9, -18));</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-9, -18));</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_nodeList[2]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(18, 9));</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(18, -9));</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_nodeList[2]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-9, 18));</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(9, 18));</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_nodeList[2]->SetPosition(m_position + wxPoint2DDouble(0, -18));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keywordtype">bool</span> Multiplier::Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  std::vector<double> inputVector;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = m_nodeList.begin(), itNEnd = m_nodeList.end(); itN != itNEnd; ++itN) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span>(node->GetNodeType() != Node::NODE_OUT) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span>(!node->IsConnected()) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  inputVector.push_back(1.0);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = m_childList.begin(), itCEnd = m_childList.end(); itC != itCEnd; ++itC) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">auto</span> nodeList = cLine->GetNodeList();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itCN = nodeList.begin(), itCNEnd = nodeList.end(); itCN != itCNEnd; ++itCN) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="class_node.html">Node</a>* childNode = *itCN;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(childNode == node) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  inputVector.push_back(cLine->GetValue());</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_output = 1.0;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < inputVector.size(); ++i) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_output *= inputVector[i];</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="class_multiplier.html#ab487232a96ed3c3f3a7c3628ddaa4c77"> 136</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_multiplier.html#ab487232a96ed3c3f3a7c3628ddaa4c77">Multiplier::GetCopy</a>()</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="class_multiplier.html">Multiplier</a>* copy = <span class="keyword">new</span> <a class="code" href="class_multiplier.html">Multiplier</a>(m_elementID);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> }</div><div class="ttc" id="class_multiplier_html"><div class="ttname"><a href="class_multiplier.html">Multiplier</a></div><div class="ttdoc">Multiplies two inputs. </div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00032">Multiplier.h:32</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_multiplier_html_ae01f155ed56925cb87d71a860882a3a1"><div class="ttname"><a href="class_multiplier.html#ae01f155ed56925cb87d71a860882a3a1">Multiplier::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8cpp_source.html#l00064">Multiplier.cpp:64</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> <div class="ttc" id="_multiplier_8h_html"><div class="ttname"><a href="_multiplier_8h.html">Multiplier.h</a></div></div> diff --git a/docs/doxygen/html/_multiplier_8h_source.html b/docs/doxygen/html/_multiplier_8h_source.html index 7588220..befa79b 100644 --- a/docs/doxygen/html/_multiplier_8h_source.html +++ b/docs/doxygen/html/_multiplier_8h_source.html @@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('_multiplier_8h_source.html','');}); </div><!--header--> <div class="contents"> <a href="_multiplier_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef MULTIPLIER_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define MULTIPLIER_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_connection_line.html">ConnectionLine</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_multiplier.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_multiplier.html">Multiplier</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_multiplier.html">Multiplier</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ~<a class="code" href="class_multiplier.html">Multiplier</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_multiplier.html#ae854fd981a98aca93b286081cc9c19f3">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_multiplier.html#acee6216a03b550f3a9cad2bef3963a18"> 39</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_multiplier.html#acee6216a03b550f3a9cad2bef3963a18">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_multiplier.html#aba53ef763812fbff891cdf0b89c7fcca"> 40</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_multiplier.html#aba53ef763812fbff891cdf0b89c7fcca">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_multiplier.html#a4fa1206b47c626930db753a70e01680d"> 41</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_multiplier.html#a4fa1206b47c626930db753a70e01680d">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_multiplier.html#ae01f155ed56925cb87d71a860882a3a1">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_multiplier.html#ab487232a96ed3c3f3a7c3628ddaa4c77">GetCopy</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#endif // MULTIPLIER_H</span></div><div class="ttc" id="class_multiplier_html"><div class="ttname"><a href="class_multiplier.html">Multiplier</a></div><div class="ttdoc">Multiplies two inputs. </div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00032">Multiplier.h:32</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_multiplier_html_ae01f155ed56925cb87d71a860882a3a1"><div class="ttname"><a href="class_multiplier.html#ae01f155ed56925cb87d71a860882a3a1">Multiplier::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8cpp_source.html#l00064">Multiplier.cpp:64</a></div></div> <div class="ttc" id="class_multiplier_html_a4fa1206b47c626930db753a70e01680d"><div class="ttname"><a href="class_multiplier.html#a4fa1206b47c626930db753a70e01680d">Multiplier::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00041">Multiplier.h:41</a></div></div> <div class="ttc" id="class_multiplier_html_acee6216a03b550f3a9cad2bef3963a18"><div class="ttname"><a href="class_multiplier.html#acee6216a03b550f3a9cad2bef3963a18">Multiplier::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_multiplier_8h_source.html#l00039">Multiplier.h:39</a></div></div> diff --git a/docs/doxygen/html/_power_element_8cpp_source.html b/docs/doxygen/html/_power_element_8cpp_source.html index 1ca65f6..bc7ca72 100644 --- a/docs/doxygen/html/_power_element_8cpp_source.html +++ b/docs/doxygen/html/_power_element_8cpp_source.html @@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('_power_element_8cpp_source.html','');} </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="class_power_element.html#a382cdc0897802eb0a89692483fa7043e"> 23</a></span> <a class="code" href="class_power_element.html#a382cdc0897802eb0a89692483fa7043e">PowerElement::PowerElement</a>() : <a class="code" href="class_element.html">Element</a>()</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_busColour.<a class="code" href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">SetRGBA</a>(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_onlineElementColour.<a class="code" href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">SetRGBA</a>(0.2, 0.2, 0.2, 1.0);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_offlineElementColour.<a class="code" href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">SetRGBA</a>(0.5, 0.5, 0.5, 1.0);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_closedSwitchColour.<a class="code" href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">SetRGBA</a>(0.0, 0.4, 0.0, 1.0);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_openedSwitchColour.<a class="code" href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">SetRGBA</a>(1.0, 0.1, 0.1, 1.0);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_powerFlowArrowColour.<a class="code" href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">SetRGBA</a>(1.0, 0.51, 0.0, 1.0);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_dynamicEventColour.<a class="code" href="class_open_g_l_colour.html#a0193e7fb5730b0e543ba826201568f94">SetRGBA</a>(1.0, 0.51, 0.0, 1.0);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_power_element.html#a39be7c8e3bdb96b16c26ea7f7d6e6cbf"> 34</a></span> <a class="code" href="class_power_element.html#a39be7c8e3bdb96b16c26ea7f7d6e6cbf">PowerElement::~PowerElement</a>() {}</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_power_element.html#a0730506d0417089d69f7ce64b05daed4"> 35</a></span> <span class="keywordtype">void</span> <a class="code" href="class_power_element.html#a0730506d0417089d69f7ce64b05daed4">PowerElement::SetNominalVoltage</a>(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_power_element.html#aef6392c211caf557bdac287b174a1ea8"> 39</a></span> wxPoint2DDouble <a class="code" href="class_power_element.html#aef6392c211caf557bdac287b174a1ea8">PowerElement::GetSwitchPoint</a>(<a class="code" href="class_element.html">Element</a>* parent,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  wxPoint2DDouble parentPoint,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  wxPoint2DDouble secondPoint)<span class="keyword"> const</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword"></span>{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">double</span> swLineSize = 25.0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  wxPoint2DDouble swPoint = wxPoint2DDouble(parentPoint.m_x, parentPoint.m_y - swLineSize);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// Rotate the second point (to compare).</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> angle = parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  secondPoint =</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  wxPoint2DDouble(std::cos(wxDegToRad(-angle)) * (secondPoint.m_x - parentPoint.m_x) -</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  std::sin(wxDegToRad(-angle)) * (secondPoint.m_y - parentPoint.m_y) + parentPoint.m_x,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  std::sin(wxDegToRad(-angle)) * (secondPoint.m_x - parentPoint.m_x) +</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::cos(wxDegToRad(-angle)) * (secondPoint.m_y - parentPoint.m_y) + parentPoint.m_y);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// Rotate</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span>(secondPoint.m_y > parentPoint.m_y) angle -= 180.0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">return</span> wxPoint2DDouble(std::cos(wxDegToRad(angle)) * (swPoint.m_x - parentPoint.m_x) -</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::sin(wxDegToRad(angle)) * (swPoint.m_y - parentPoint.m_y) + parentPoint.m_x,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  std::sin(wxDegToRad(angle)) * (swPoint.m_x - parentPoint.m_x) +</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  std::cos(wxDegToRad(angle)) * (swPoint.m_y - parentPoint.m_y) + parentPoint.m_y);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="class_power_element.html#a789105cc7c170330e7daf2a0453fde6d"> 63</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_power_element.html#a789105cc7c170330e7daf2a0453fde6d">PowerElement::SwitchesContains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keyword"></span>{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_switchRect.size(); i++) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(m_parentList[i]) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(m_switchRect[i].<a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(position)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="class_power_element.html#abd2cee52270374e17951782bdb571dce"> 73</a></span> <span class="keywordtype">void</span> <a class="code" href="class_power_element.html#abd2cee52270374e17951782bdb571dce">PowerElement::UpdateSwitches</a>()</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// General method, to one switch only.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  wxPoint2DDouble swCenter = wxPoint2DDouble((m_pointList[0].m_x + m_pointList[1].m_x) / 2.0,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  (m_pointList[0].m_y + m_pointList[1].m_y) / 2.0);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_switchRect[0] = wxRect2DDouble(swCenter.m_x - m_switchSize / 2.0, swCenter.m_y - m_switchSize / 2.0, m_switchSize,</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_switchSize);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="class_power_element.html#ab5799bdf1bff481670285d763572453c"> 82</a></span> <span class="keywordtype">void</span> <a class="code" href="class_power_element.html#ab5799bdf1bff481670285d763572453c">PowerElement::DrawSwitches</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keyword"></span>{</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">int</span> i = 0;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_parentList.begin(); it != m_parentList.end(); it++) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="class_element.html">Element</a>* parent = *it;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  glColor4dv(m_closedSwitchColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  glColor4dv(m_openedSwitchColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  glPushMatrix();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  glTranslated(m_switchRect[i].<a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x + m_switchSize / 2.0,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_switchRect[i].<a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y + m_switchSize / 2.0, 0.0);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  glRotated(parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>(), 0.0, 0.0, 1.0);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  glTranslated(-m_switchRect[i].<a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_x - m_switchSize / 2.0,</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  -m_switchRect[i].<a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y - m_switchSize / 2.0, 0.0);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(m_switchRect[i].<a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>() + wxPoint2DDouble(m_switchSize / 2.0, m_switchSize / 2.0),</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_switchSize, m_switchSize);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  glPopMatrix();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  i++;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="class_power_element.html#a6c656ef223d36e96b19b0a9ec2115e9e"> 110</a></span> <span class="keywordtype">void</span> <a class="code" href="class_power_element.html#a6c656ef223d36e96b19b0a9ec2115e9e">PowerElement::CalculatePowerFlowPts</a>(std::vector<wxPoint2DDouble> edges)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">double</span> arrowRate = 100.0; <span class="comment">// One arrow to each "arrowRate" distance in pixels.</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span>(edges.size() < 2) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// Clear all power flow points</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_powerFlowArrow.size(); i++) m_powerFlowArrow[i].clear();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_powerFlowArrow.clear();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < (int)edges.size(); i++) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  wxPoint2DDouble pt1 = edges[i - 1];</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  wxPoint2DDouble pt2 = edges[i];</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordtype">double</span> angle = std::atan2(pt2.m_y - pt1.m_y, pt2.m_x - pt1.m_x);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  wxPoint2DDouble rotPt2(</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  std::cos(-angle) * (pt2.m_x - pt1.m_x) - std::sin(-angle) * (pt2.m_y - pt1.m_y) + pt1.m_x,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  std::sin(-angle) * (pt2.m_x - pt1.m_x) + std::cos(-angle) * (pt2.m_y - pt1.m_y) + pt1.m_y);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordtype">int</span> numArrows = std::abs(pt1.m_x - rotPt2.m_x) / arrowRate;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span>(numArrows == 0) numArrows = 1;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numArrows; i++) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  wxPoint2DDouble arrowCenter(pt1.m_x + ((rotPt2.m_x - pt1.m_x) / <span class="keywordtype">double</span>(numArrows + 1)) * <span class="keywordtype">double</span>(i + 1),</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  pt1.m_y + ((rotPt2.m_y - pt1.m_y) / <span class="keywordtype">double</span>(numArrows + 1)) * <span class="keywordtype">double</span>(i + 1));</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  std::vector<wxPoint2DDouble> triPts;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  triPts.push_back(arrowCenter + wxPoint2DDouble(5.0, 0.0));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  triPts.push_back(arrowCenter + wxPoint2DDouble(-5.0, 5.0));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  triPts.push_back(arrowCenter + wxPoint2DDouble(-5.0, -5.0));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 3; i++) {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  triPts[i] = wxPoint2DDouble(</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  std::cos(angle) * (triPts[i].m_x - pt1.m_x) - std::sin(angle) * (triPts[i].m_y - pt1.m_y) + pt1.m_x,</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  std::sin(angle) * (triPts[i].m_x - pt1.m_x) + std::cos(angle) * (triPts[i].m_y - pt1.m_y) +</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  pt1.m_y);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  m_powerFlowArrow.push_back(triPts);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="class_power_element.html#a8d6e92147c46501f592f67accc1af866"> 154</a></span> <span class="keywordtype">void</span> <a class="code" href="class_power_element.html#a8d6e92147c46501f592f67accc1af866">PowerElement::DrawPowerFlowPts</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="keyword"></span>{</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  glColor4dv(m_powerFlowArrowColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_powerFlowArrow.size(); i++) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="class_element.html#ae425d7e4f94bf7280d7d68c577d2019e">DrawTriangle</a>(m_powerFlowArrow[i]);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="keywordtype">double</span> PowerElement::GetValueFromUnit(<span class="keywordtype">double</span> value, <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> valueUnit)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">switch</span>(valueUnit) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>:</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>:</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>:</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>:</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">return</span> value * 1e3;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>:</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>:</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">return</span> value * 1e6;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> value;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_element_html_ae425d7e4f94bf7280d7d68c577d2019e"><div class="ttname"><a href="class_element.html#ae425d7e4f94bf7280d7d68c577d2019e">Element::DrawTriangle</a></div><div class="ttdeci">virtual void DrawTriangle(std::vector< wxPoint2DDouble > points, GLenum mode=GL_TRIANGLES) const</div><div class="ttdoc">Draw a triangle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00060">Element.cpp:60</a></div></div> <div class="ttc" id="class_power_element_html_abd2cee52270374e17951782bdb571dce"><div class="ttname"><a href="class_power_element.html#abd2cee52270374e17951782bdb571dce">PowerElement::UpdateSwitches</a></div><div class="ttdeci">virtual void UpdateSwitches()</div><div class="ttdoc">Update the switch position. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8cpp_source.html#l00073">PowerElement.cpp:73</a></div></div> <div class="ttc" id="class_power_element_html_a0730506d0417089d69f7ce64b05daed4"><div class="ttname"><a href="class_power_element.html#a0730506d0417089d69f7ce64b05daed4">PowerElement::SetNominalVoltage</a></div><div class="ttdeci">virtual void SetNominalVoltage(std::vector< double > nominalVoltage, std::vector< ElectricalUnit > nominalVoltageUnit)</div><div class="ttdoc">Set nominal voltage of the element. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8cpp_source.html#l00035">PowerElement.cpp:35</a></div></div> @@ -105,7 +105,7 @@ $(document).ready(function(){initNavTree('_power_element_8cpp_source.html','');} <div class="ttc" id="class_power_element_html_a6c656ef223d36e96b19b0a9ec2115e9e"><div class="ttname"><a href="class_power_element.html#a6c656ef223d36e96b19b0a9ec2115e9e">PowerElement::CalculatePowerFlowPts</a></div><div class="ttdeci">virtual void CalculatePowerFlowPts(std::vector< wxPoint2DDouble > edges)</div><div class="ttdoc">Calculate the points of the power flow arrows. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8cpp_source.html#l00110">PowerElement.cpp:110</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> <div class="ttc" id="class_power_element_html_a8d6e92147c46501f592f67accc1af866"><div class="ttname"><a href="class_power_element.html#a8d6e92147c46501f592f67accc1af866">PowerElement::DrawPowerFlowPts</a></div><div class="ttdeci">virtual void DrawPowerFlowPts() const</div><div class="ttdoc">Draw power flow arrows. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8cpp_source.html#l00154">PowerElement.cpp:154</a></div></div> -<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div><div class="ttdoc">Switching data of power elements. </div></div> +<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div></div> <div class="ttc" id="class_power_element_html_a382cdc0897802eb0a89692483fa7043e"><div class="ttname"><a href="class_power_element.html#a382cdc0897802eb0a89692483fa7043e">PowerElement::PowerElement</a></div><div class="ttdeci">PowerElement()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8cpp_source.html#l00023">PowerElement.cpp:23</a></div></div> <div class="ttc" id="class_power_element_html_a39be7c8e3bdb96b16c26ea7f7d6e6cbf"><div class="ttname"><a href="class_power_element.html#a39be7c8e3bdb96b16c26ea7f7d6e6cbf">PowerElement::~PowerElement</a></div><div class="ttdeci">~PowerElement()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8cpp_source.html#l00034">PowerElement.cpp:34</a></div></div> <div class="ttc" id="class_power_element_html_ab5799bdf1bff481670285d763572453c"><div class="ttname"><a href="class_power_element.html#ab5799bdf1bff481670285d763572453c">PowerElement::DrawSwitches</a></div><div class="ttdeci">virtual void DrawSwitches() const</div><div class="ttdoc">Draw switch. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8cpp_source.html#l00082">PowerElement.cpp:82</a></div></div> diff --git a/docs/doxygen/html/_power_element_8h.html b/docs/doxygen/html/_power_element_8h.html index de32ed6..5ad31ce 100644 --- a/docs/doxygen/html/_power_element_8h.html +++ b/docs/doxygen/html/_power_element_8h.html @@ -91,21 +91,21 @@ $(document).ready(function(){initNavTree('_power_element_8h.html','');}); <div class="title">PowerElement.h File Reference</div> </div> </div><!--header--> <div class="contents"> - -<p>Switching data of power elements. -<a href="#details">More...</a></p> <div class="textblock"><code>#include "<a class="el" href="_element_8h_source.html">Element.h</a>"</code><br /> -<code>#include "ElementPlotData.h"</code><br /> +<code>#include "<a class="el" href="_element_plot_data_8h_source.html">ElementPlotData.h</a>"</code><br /> </div> <p><a href="_power_element_8h_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Classes</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_switching_data.html">SwitchingData</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Switching data of power elements. <a href="struct_switching_data.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_integration_constant.html">IntegrationConstant</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Integration constants to calculate dynamic elements through trapezoidal integration method. <a href="struct_integration_constant.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_power_element.html">PowerElement</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Abstract class of power elements. <a href="class_power_element.html#details">More...</a><br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> @@ -169,13 +169,7 @@ Enumerations</h2></td></tr> </td></tr> <tr class="separator:a467d3005d31dde0ba0e52cf8e233e740"><td class="memSeparator" colspan="2"> </td></tr> </table> -<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Switching data of power elements. </p> -<p>Base class of power elements.</p> -<p>Integration constants to calculate dynamic elements through trapezoidal integration method.</p> - -<p class="definition">Definition in file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> -</div><h2 class="groupheader">Enumeration Type Documentation</h2> +<h2 class="groupheader">Enumeration Type Documentation</h2> <a id="a398e3da742a726a8f2bacd8149220cca"></a> <h2 class="memtitle"><span class="permalink"><a href="#a398e3da742a726a8f2bacd8149220cca">◆ </a></span>ElectricalUnit</h2> @@ -258,11 +252,11 @@ Enumerations</h2></td></tr> </td></tr> <tr><td class="fieldname"><a id="a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d"></a>FAULT_LINE_GROUND </td><td class="fielddoc"><p>Line-to-ground fault </p> </td></tr> -<tr><td class="fieldname"><a id="a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd"></a>FAULT_LINE_A </td><td class="fielddoc"><p><a class="el" href="class_fault.html">Fault</a> on phase A or phase AB </p> +<tr><td class="fieldname"><a id="a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd"></a>FAULT_LINE_A </td><td class="fielddoc"><p><a class="el" href="class_fault.html" title="Calculate the fault of the system and update the elements data. ">Fault</a> on phase A or phase AB </p> </td></tr> -<tr><td class="fieldname"><a id="a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245"></a>FAULT_LINE_B </td><td class="fielddoc"><p><a class="el" href="class_fault.html">Fault</a> on phase B or phase BC </p> +<tr><td class="fieldname"><a id="a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245"></a>FAULT_LINE_B </td><td class="fielddoc"><p><a class="el" href="class_fault.html" title="Calculate the fault of the system and update the elements data. ">Fault</a> on phase B or phase BC </p> </td></tr> -<tr><td class="fieldname"><a id="a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315"></a>FAULT_LINE_C </td><td class="fielddoc"><p><a class="el" href="class_fault.html">Fault</a> on phase C or phase CA </p> +<tr><td class="fieldname"><a id="a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315"></a>FAULT_LINE_C </td><td class="fielddoc"><p><a class="el" href="class_fault.html" title="Calculate the fault of the system and update the elements data. ">Fault</a> on phase C or phase CA </p> </td></tr> </table> @@ -286,9 +280,9 @@ Enumerations</h2></td></tr> <table class="fieldtable"> <tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3"></a>PF_NONE </td><td class="fielddoc"><p>No direction (no arrows printed) </p> </td></tr> -<tr><td class="fieldname"><a id="a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869"></a>PF_TO_BUS </td><td class="fielddoc"><p><a class="el" href="class_element.html">Element</a> to bus </p> +<tr><td class="fieldname"><a id="a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869"></a>PF_TO_BUS </td><td class="fielddoc"><p><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> to bus </p> </td></tr> -<tr><td class="fieldname"><a id="a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81"></a>PF_TO_ELEMENT </td><td class="fielddoc"><p><a class="el" href="class_bus.html">Bus</a> to element </p> +<tr><td class="fieldname"><a id="a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81"></a>PF_TO_ELEMENT </td><td class="fielddoc"><p><a class="el" href="class_bus.html" title="Node for power elements. All others power elements are connected through this. ">Bus</a> to element </p> </td></tr> <tr><td class="fieldname"><a id="a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523"></a>PF_BUS1_TO_BUS2 </td><td class="fielddoc"><p>First bus to secont bus (branch elements) </p> </td></tr> diff --git a/docs/doxygen/html/_power_element_8h_source.html b/docs/doxygen/html/_power_element_8h_source.html index abd7623..2dd1720 100644 --- a/docs/doxygen/html/_power_element_8h_source.html +++ b/docs/doxygen/html/_power_element_8h_source.html @@ -88,11 +88,11 @@ $(document).ready(function(){initNavTree('_power_element_8h_source.html','');}); <div class="title">PowerElement.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_power_element_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef POWERELEMENT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define POWERELEMENT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "ElementPlotData.h"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca"> 28</a></span> <span class="keyword">enum</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"> 29</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a> = 0, </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027"> 30</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>, </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"> 31</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>, </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c"> 32</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>, </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392"> 33</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>, </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c"> 34</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>, </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"> 35</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>, </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"> 36</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>, </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9"> 37</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>, </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5"> 38</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>, </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"> 39</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>, </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"> 40</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>, </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"> 41</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>, </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"> 42</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>, </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec"> 43</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>, </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1"> 44</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>, </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11"> 45</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11">UNIT_S</a>, </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65"> 46</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65">UNIT_S_km</a>, </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3"> 47</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a>, </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5"> 48</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</a> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb"> 55</a></span> <span class="keyword">enum</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a> {</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0"> 56</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a> = 0, </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512"> 57</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</a>, </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e"> 58</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e">FAULT_2LINE_GROUND</a>, </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d"> 59</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d">FAULT_LINE_GROUND</a>, </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd"> 60</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a>, </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245"> 61</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</a>, </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315"> 62</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b"> 69</a></span> <span class="keyword">enum</span> <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b">SwitchingType</a> {</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7"> 70</a></span>  <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a> = 0, </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776"> 71</a></span>  <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</a> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740"> 78</a></span> <span class="keyword">enum</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> {</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3"> 79</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a> = 0, </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869"> 80</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a>, </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81"> 81</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>, </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523"> 82</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523">PF_BUS1_TO_BUS2</a>, </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095"> 83</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095">PF_BUS2_TO_BUS1</a> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> };</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct_switching_data.html"> 93</a></span> <span class="keyword">struct </span><a class="code" href="struct_switching_data.html">SwitchingData</a> {</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574"> 94</a></span>  std::vector<SwitchingType> <a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>; </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df"> 95</a></span>  std::vector<double> <a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>; </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> };</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="struct_integration_constant.html"> 105</a></span> <span class="keyword">struct </span><a class="code" href="struct_integration_constant.html">IntegrationConstant</a> {</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="struct_integration_constant.html#afc3598097377951b84492d087a06b455"> 106</a></span>  <span class="keywordtype">double</span> <a class="code" href="struct_integration_constant.html#afc3598097377951b84492d087a06b455">c</a>; </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65"> 107</a></span>  <span class="keywordtype">double</span> <a class="code" href="struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65">m</a>; </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> };</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="class_power_element.html"> 117</a></span> <span class="keyword">class </span><a class="code" href="class_power_element.html">PowerElement</a> : <span class="keyword">public</span> <a class="code" href="class_element.html">Element</a></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="class_power_element.html">PowerElement</a>();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  ~<a class="code" href="class_power_element.html">PowerElement</a>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">virtual</span> wxPoint2DDouble GetSwitchPoint(<a class="code" href="class_element.html">Element</a>* parent,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  wxPoint2DDouble parentPoint,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  wxPoint2DDouble secondPoint) <span class="keyword">const</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> SwitchesContains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateSwitches();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSwitches() <span class="keyword">const</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CalculatePowerFlowPts(std::vector<wxPoint2DDouble> edges);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawPowerFlowPts() <span class="keyword">const</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f"> 177</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(<a class="code" href="struct_switching_data.html">SwitchingData</a> data) { m_swData = data; }</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1"> 182</a></span>  <span class="keyword">virtual</span> <a class="code" href="struct_switching_data.html">SwitchingData</a> <a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>() { <span class="keywordflow">return</span> m_swData; }</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="class_power_element.html#a2ee71f9eb90beadf5439ce9f70469b49"> 187</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_power_element.html#a2ee71f9eb90beadf5439ce9f70469b49">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection) { m_pfDirection = pfDirection; }</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="class_power_element.html#a8ffa0f79241bd21ad5dd501d26fed933"> 192</a></span>  <span class="keyword">virtual</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> <a class="code" href="class_power_element.html#a8ffa0f79241bd21ad5dd501d26fed933">GetPowerFlowDirection</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_pfDirection; }</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="class_power_element.html#acadf6712b430f9fadfbd7015903eaeaf"> 198</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_power_element.html#acadf6712b430f9fadfbd7015903eaeaf">GetPlotData</a>(<a class="code" href="class_element_plot_data.html">ElementPlotData</a>& plotData) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="class_power_element.html#aefa43fe646e90428b1ed9884a7e499ae"> 203</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_power_element.html#aefa43fe646e90428b1ed9884a7e499ae">HaveDynamicEvent</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_dynEvent; }</div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="class_power_element.html#a4dbd26d0a7987c30729efffa860debc4"> 208</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_power_element.html#a4dbd26d0a7987c30729efffa860debc4">SetDynamicEvent</a>(<span class="keywordtype">bool</span> dynEvent = <span class="keyword">true</span>) { m_dynEvent = dynEvent; }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> GetValueFromUnit(<span class="keywordtype">double</span> value, <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> valueUnit);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> m_swData;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  std::vector<std::vector<wxPoint2DDouble> > m_powerFlowArrow;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> m_pfDirection = <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_busColour;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_onlineElementColour;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_offlineElementColour;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_closedSwitchColour;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_openedSwitchColour;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_powerFlowArrowColour;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_dynamicEventColour;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordtype">bool</span> m_dynEvent = <span class="keyword">false</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> };</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="preprocessor">#endif // POWERELEMENT_H</span></div><div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00043">PowerElement.h:43</a></div></div> +<a href="_power_element_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef POWERELEMENT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define POWERELEMENT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_element_plot_data_8h.html">ElementPlotData.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca"> 28</a></span> <span class="keyword">enum</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"> 29</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a> = 0, </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027"> 30</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>, </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"> 31</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>, </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c"> 32</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>, </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392"> 33</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>, </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c"> 34</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>, </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"> 35</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>, </div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"> 36</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>, </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9"> 37</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>, </div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5"> 38</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>, </div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"> 39</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>, </div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"> 40</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>, </div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"> 41</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>, </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"> 42</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>, </div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec"> 43</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>, </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1"> 44</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8a826e75d0d077b2174d7bb62fc8dad1">UNIT_OHM_km</a>, </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11"> 45</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11">UNIT_S</a>, </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65"> 46</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65">UNIT_S_km</a>, </div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3"> 47</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a>, </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5"> 48</a></span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</a> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb"> 55</a></span> <span class="keyword">enum</span> <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cb">FaultData</a> {</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0"> 56</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbac670e819e6d824b60cee62ca39ddc8d0">FAULT_THREEPHASE</a> = 0, </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512"> 57</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</a>, </div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e"> 58</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e">FAULT_2LINE_GROUND</a>, </div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d"> 59</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d">FAULT_LINE_GROUND</a>, </div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd"> 60</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a>, </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245"> 61</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba6ab815fdf2ca1dc91c0dd3ec4c630245">FAULT_LINE_B</a>, </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315"> 62</a></span>  <a class="code" href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b"> 69</a></span> <span class="keyword">enum</span> <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b">SwitchingType</a> {</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7"> 70</a></span>  <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a> = 0, </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776"> 71</a></span>  <a class="code" href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</a> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740"> 78</a></span> <span class="keyword">enum</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> {</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3"> 79</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a> = 0, </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869"> 80</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a>, </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81"> 81</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>, </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523"> 82</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523">PF_BUS1_TO_BUS2</a>, </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095"> 83</a></span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095">PF_BUS2_TO_BUS1</a> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> };</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="struct_switching_data.html"> 93</a></span> <span class="keyword">struct </span><a class="code" href="struct_switching_data.html">SwitchingData</a> {</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574"> 94</a></span>  std::vector<SwitchingType> <a class="code" href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">swType</a>; </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df"> 95</a></span>  std::vector<double> <a class="code" href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">swTime</a>; </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> };</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="struct_integration_constant.html"> 105</a></span> <span class="keyword">struct </span><a class="code" href="struct_integration_constant.html">IntegrationConstant</a> {</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="struct_integration_constant.html#afc3598097377951b84492d087a06b455"> 106</a></span>  <span class="keywordtype">double</span> <a class="code" href="struct_integration_constant.html#afc3598097377951b84492d087a06b455">c</a>; </div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65"> 107</a></span>  <span class="keywordtype">double</span> <a class="code" href="struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65">m</a>; </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> };</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="class_power_element.html"> 117</a></span> <span class="keyword">class </span><a class="code" href="class_power_element.html">PowerElement</a> : <span class="keyword">public</span> <a class="code" href="class_element.html">Element</a></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="class_power_element.html">PowerElement</a>();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  ~<a class="code" href="class_power_element.html">PowerElement</a>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">virtual</span> wxPoint2DDouble GetSwitchPoint(<a class="code" href="class_element.html">Element</a>* parent,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  wxPoint2DDouble parentPoint,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  wxPoint2DDouble secondPoint) <span class="keyword">const</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> SwitchesContains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateSwitches();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSwitches() <span class="keyword">const</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CalculatePowerFlowPts(std::vector<wxPoint2DDouble> edges);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawPowerFlowPts() <span class="keyword">const</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f"> 177</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_power_element.html#a08d2e84b91ab7443b20a9d7eb6ab441f">SetSwitchingData</a>(<a class="code" href="struct_switching_data.html">SwitchingData</a> data) { m_swData = data; }</div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1"> 182</a></span>  <span class="keyword">virtual</span> <a class="code" href="struct_switching_data.html">SwitchingData</a> <a class="code" href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">GetSwitchingData</a>() { <span class="keywordflow">return</span> m_swData; }</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="class_power_element.html#a2ee71f9eb90beadf5439ce9f70469b49"> 187</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_power_element.html#a2ee71f9eb90beadf5439ce9f70469b49">SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection) { m_pfDirection = pfDirection; }</div><div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="class_power_element.html#a8ffa0f79241bd21ad5dd501d26fed933"> 192</a></span>  <span class="keyword">virtual</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> <a class="code" href="class_power_element.html#a8ffa0f79241bd21ad5dd501d26fed933">GetPowerFlowDirection</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_pfDirection; }</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="class_power_element.html#acadf6712b430f9fadfbd7015903eaeaf"> 198</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_power_element.html#acadf6712b430f9fadfbd7015903eaeaf">GetPlotData</a>(<a class="code" href="class_element_plot_data.html">ElementPlotData</a>& plotData) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="class_power_element.html#aefa43fe646e90428b1ed9884a7e499ae"> 203</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_power_element.html#aefa43fe646e90428b1ed9884a7e499ae">HaveDynamicEvent</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_dynEvent; }</div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="class_power_element.html#a4dbd26d0a7987c30729efffa860debc4"> 208</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_power_element.html#a4dbd26d0a7987c30729efffa860debc4">SetDynamicEvent</a>(<span class="keywordtype">bool</span> dynEvent = <span class="keyword">true</span>) { m_dynEvent = dynEvent; }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keyword">virtual</span> <span class="keywordtype">double</span> GetValueFromUnit(<span class="keywordtype">double</span> value, <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> valueUnit);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="struct_switching_data.html">SwitchingData</a> m_swData;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  std::vector<std::vector<wxPoint2DDouble> > m_powerFlowArrow;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> m_pfDirection = <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_busColour;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_onlineElementColour;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_offlineElementColour;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_closedSwitchColour;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_openedSwitchColour;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_powerFlowArrowColour;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> m_dynamicEventColour;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordtype">bool</span> m_dynEvent = <span class="keyword">false</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> };</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="preprocessor">#endif // POWERELEMENT_H</span></div><div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00043">PowerElement.h:43</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cba836a7abab9ade9c28512ea3ee0737315">FAULT_LINE_C</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00062">PowerElement.h:62</a></div></div> <div class="ttc" id="struct_switching_data_html_a3323745bf0a3f6461fbc19bc76a189df"><div class="ttname"><a href="struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df">SwitchingData::swTime</a></div><div class="ttdeci">std::vector< double > swTime</div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00095">PowerElement.h:95</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00032">PowerElement.h:32</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaa8b6335aeec4befa68e4642a94026d0d">FAULT_LINE_GROUND</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00059">PowerElement.h:59</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00030">PowerElement.h:30</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00047">PowerElement.h:47</a></div></div> @@ -104,17 +104,17 @@ $(document).ready(function(){initNavTree('_power_element_8h_source.html','');}); <div class="ttc" id="struct_switching_data_html_af78fb958137a0532ea2a584810708574"><div class="ttname"><a href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">SwitchingData::swType</a></div><div class="ttdeci">std::vector< SwitchingType > swType</div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00094">PowerElement.h:94</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220cca"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a></div><div class="ttdeci">ElectricalUnit</div><div class="ttdoc">Electrical units. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00028">PowerElement.h:28</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> -<div class="ttc" id="struct_integration_constant_html"><div class="ttname"><a href="struct_integration_constant.html">IntegrationConstant</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00105">PowerElement.h:105</a></div></div> +<div class="ttc" id="struct_integration_constant_html"><div class="ttname"><a href="struct_integration_constant.html">IntegrationConstant</a></div><div class="ttdoc">Integration constants to calculate dynamic elements through trapezoidal integration method...</div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00105">PowerElement.h:105</a></div></div> <div class="ttc" id="class_power_element_html_a4dbd26d0a7987c30729efffa860debc4"><div class="ttname"><a href="class_power_element.html#a4dbd26d0a7987c30729efffa860debc4">PowerElement::SetDynamicEvent</a></div><div class="ttdeci">virtual void SetDynamicEvent(bool dynEvent=true)</div><div class="ttdoc">Set if the power element have dynamic event. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00208">PowerElement.h:208</a></div></div> <div class="ttc" id="_power_element_8h_html_ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776"><div class="ttname"><a href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00071">PowerElement.h:71</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00081">PowerElement.h:81</a></div></div> -<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div><div class="ttdoc">Class to manage color of OpenGL. </div></div> +<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00035">PowerElement.h:35</a></div></div> <div class="ttc" id="struct_integration_constant_html_adafabd0d37a52d4ed054a800cbce3d65"><div class="ttname"><a href="struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65">IntegrationConstant::m</a></div><div class="ttdeci">double m</div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00107">PowerElement.h:107</a></div></div> <div class="ttc" id="class_power_element_html_acadf6712b430f9fadfbd7015903eaeaf"><div class="ttname"><a href="class_power_element.html#acadf6712b430f9fadfbd7015903eaeaf">PowerElement::GetPlotData</a></div><div class="ttdeci">virtual bool GetPlotData(ElementPlotData &plotData)</div><div class="ttdoc">Fill the plot data. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00198">PowerElement.h:198</a></div></div> -<div class="ttc" id="struct_switching_data_html"><div class="ttname"><a href="struct_switching_data.html">SwitchingData</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00093">PowerElement.h:93</a></div></div> +<div class="ttc" id="struct_switching_data_html"><div class="ttname"><a href="struct_switching_data.html">SwitchingData</a></div><div class="ttdoc">Switching data of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00093">PowerElement.h:93</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad7f3fd44a6a841106ba66d1adbd53fdd">FAULT_LINE_A</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00060">PowerElement.h:60</a></div></div> -<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00056">ElementPlotData.h:56</a></div></div> +<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00064">ElementPlotData.h:64</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00039">PowerElement.h:39</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00033">PowerElement.h:33</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbad44688f1ea0a010d3c0fd37870e46512">FAULT_2LINE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00057">PowerElement.h:57</a></div></div> @@ -125,6 +125,7 @@ $(document).ready(function(){initNavTree('_power_element_8h_source.html','');}); <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7c0341915f48c889a8885b72199f2a11">UNIT_S</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00045">PowerElement.h:45</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095">PF_BUS2_TO_BUS1</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00083">PowerElement.h:83</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> +<div class="ttc" id="_element_plot_data_8h_html"><div class="ttname"><a href="_element_plot_data_8h.html">ElementPlotData.h</a></div></div> <div class="ttc" id="class_power_element_html_a8ffa0f79241bd21ad5dd501d26fed933"><div class="ttname"><a href="class_power_element.html#a8ffa0f79241bd21ad5dd501d26fed933">PowerElement::GetPowerFlowDirection</a></div><div class="ttdeci">virtual PowerFlowDirection GetPowerFlowDirection() const</div><div class="ttdoc">Return the direction of the power flow. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00192">PowerElement.h:192</a></div></div> <div class="ttc" id="_power_element_8h_html_a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e"><div class="ttname"><a href="_power_element_8h.html#a41a50717b1a7ef4caa3c499c164fc2cbaafad40a772b78232a91fe61d606a323e">FAULT_2LINE_GROUND</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00058">PowerElement.h:58</a></div></div> <div class="ttc" id="class_power_element_html_ab78269f9b66fbf90ae09050083e9dbe1"><div class="ttname"><a href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">PowerElement::GetSwitchingData</a></div><div class="ttdeci">virtual SwitchingData GetSwitchingData()</div><div class="ttdoc">Returns the switching data of the element. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00182">PowerElement.h:182</a></div></div> @@ -132,9 +133,9 @@ $(document).ready(function(){initNavTree('_power_element_8h_source.html','');}); <div class="ttc" id="_power_element_8h_html_ae98a0d9ac1aab1d3a057854f5ebdca1b"><div class="ttname"><a href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1b">SwitchingType</a></div><div class="ttdeci">SwitchingType</div><div class="ttdoc">Type of switching. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00069">PowerElement.h:69</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00079">PowerElement.h:79</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00040">PowerElement.h:40</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> +<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdoc">Class to manage color of OpenGL. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a></div><div class="ttdeci">PowerFlowDirection</div><div class="ttdoc">Direction of power flow arrows. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00078">PowerElement.h:78</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaaf5ad31fee4a7f5843527be386033de65">UNIT_S_km</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00046">PowerElement.h:46</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523">PF_BUS1_TO_BUS2</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00082">PowerElement.h:82</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00037">PowerElement.h:37</a></div></div> diff --git a/docs/doxygen/html/_power_flow_8cpp_source.html b/docs/doxygen/html/_power_flow_8cpp_source.html index 7143bea..d0931d7 100644 --- a/docs/doxygen/html/_power_flow_8cpp_source.html +++ b/docs/doxygen/html/_power_flow_8cpp_source.html @@ -88,18 +88,19 @@ $(document).ready(function(){initNavTree('_power_flow_8cpp_source.html','');}); <div class="title">PowerFlow.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "PowerFlow.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> PowerFlow::PowerFlow() : <a class="code" href="class_electric_calculation.html">ElectricCalculation</a>() {}</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> PowerFlow::PowerFlow(std::vector<Element*> elementList) : <a class="code" href="class_electric_calculation.html">ElectricCalculation</a>() { GetElementsFromList(elementList); }</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> PowerFlow::~PowerFlow() {}</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keywordtype">bool</span> PowerFlow::RunGaussSeidel(<span class="keywordtype">double</span> systemPowerBase,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordtype">int</span> maxIteration,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">double</span> error,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordtype">double</span> initAngle,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> accFactor)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="comment">// Calculate the Ybus.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">if</span>(!GetYBus(m_yBus, systemPowerBase)) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_errorMsg = _(<span class="stringliteral">"No buses found on the system."</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Number of buses on the system.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">int</span> numberOfBuses = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_busList.size());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::vector<BusType> busType; <span class="comment">// Bus type</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  std::vector<std::complex<double> > voltage; <span class="comment">// Voltage of buses</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  std::vector<std::complex<double> > power; <span class="comment">// Injected power</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::vector<std::complex<double> > loadPower; <span class="comment">// Only the load power</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  std::vector<ReactiveLimits> reactiveLimit; <span class="comment">// Limit of reactive power on PV buses</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  reactiveLimit.resize(numberOfBuses);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">int</span> busNumber = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itb = m_busList.begin(); itb != m_busList.end(); itb++) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *itb;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// Fill the bus type</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span>(data.slackBus) busType.push_back(BUS_SLACK);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// If the bus have controlled voltage, check if at least one synchronous machine is connected, then set the</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// bus type.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(data.isVoltageControlled) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">bool</span> hasSyncMachine = <span class="keyword">false</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// Synchronous generator</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsg = m_syncGeneratorList.begin(); itsg != m_syncGeneratorList.end(); itsg++) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *itsg;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span>(bus == syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0] && syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) hasSyncMachine = <span class="keyword">true</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Synchronous motor</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsm = m_syncMotorList.begin(); itsm != m_syncMotorList.end(); itsm++) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *itsm;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span>(bus == syncMotor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0] && syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) hasSyncMachine = <span class="keyword">true</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(hasSyncMachine)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  busType.push_back(BUS_PV);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  busType.push_back(BUS_PQ);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  busType.push_back(BUS_PQ);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Fill the voltages array</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span>(data.isVoltageControlled && busType[busNumber] != BUS_PQ) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  voltage.push_back(std::complex<double>(data.controlledVoltage, 0.0));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  voltage.push_back(std::complex<double>(1.0, 0.0));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// Fill the power array</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  power.push_back(std::complex<double>(0.0, 0.0)); <span class="comment">// Initial value</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  loadPower.push_back(std::complex<double>(0.0, 0.0));</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// Synchronous generator</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsg = m_syncGeneratorList.begin(); itsg != m_syncGeneratorList.end(); itsg++) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *itsg;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>(bus == syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> childData = syncGenerator->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  power[busNumber] += std::complex<double>(childData.activePower, childData.reactivePower);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span>(busType[busNumber] == BUS_PV) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>(childData.haveMaxReactive && reactiveLimit[busNumber].maxLimitType != RL_UNLIMITED_SOURCE) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  reactiveLimit[busNumber].maxLimitType = RL_LIMITED;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  reactiveLimit[busNumber].maxLimit += childData.maxReactive;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!childData.haveMaxReactive)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  reactiveLimit[busNumber].maxLimitType = RL_UNLIMITED_SOURCE;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span>(childData.haveMinReactive && reactiveLimit[busNumber].minLimitType != RL_UNLIMITED_SOURCE) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  reactiveLimit[busNumber].minLimitType = RL_LIMITED;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  reactiveLimit[busNumber].minLimit += childData.minReactive;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!childData.haveMinReactive)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  reactiveLimit[busNumber].minLimitType = RL_UNLIMITED_SOURCE;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// Synchronous motor</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsm = m_syncMotorList.begin(); itsm != m_syncMotorList.end(); itsm++) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *itsm;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span>(syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span>(bus == syncMotor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> childData = syncMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  power[busNumber] += std::complex<double>(-childData.activePower, childData.reactivePower);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  loadPower[busNumber] += std::complex<double>(-childData.activePower, 0.0);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(busType[busNumber] == BUS_PV) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span>(childData.haveMaxReactive && reactiveLimit[busNumber].maxLimitType != RL_UNLIMITED_SOURCE) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  reactiveLimit[busNumber].maxLimitType = RL_LIMITED;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  reactiveLimit[busNumber].maxLimit += childData.maxReactive;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!childData.haveMaxReactive)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  reactiveLimit[busNumber].maxLimitType = RL_UNLIMITED_SOURCE;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span>(childData.haveMinReactive && reactiveLimit[busNumber].minLimitType != RL_UNLIMITED_SOURCE) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  reactiveLimit[busNumber].minLimitType = RL_LIMITED;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  reactiveLimit[busNumber].minLimit += childData.minReactive;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!childData.haveMinReactive)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  reactiveLimit[busNumber].minLimitType = RL_UNLIMITED_SOURCE;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// Load</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itl = m_loadList.begin(); itl != m_loadList.end(); itl++) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="class_load.html">Load</a>* load = *itl;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span>(load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(bus == load-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> childData = load->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(childData.loadType == CONST_POWER) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  power[busNumber] += std::complex<double>(-childData.activePower, -childData.reactivePower);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  loadPower[busNumber] += std::complex<double>(-childData.activePower, -childData.reactivePower);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// Induction motor</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itim = m_indMotorList.begin(); itim != m_indMotorList.end(); itim++) {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = *itim;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span>(indMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">if</span>(bus == indMotor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]) {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> childData = indMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  power[busNumber] += std::complex<double>(-childData.activePower, -childData.reactivePower);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  loadPower[busNumber] += std::complex<double>(-childData.activePower, -childData.reactivePower);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  busNumber++;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// Check if have slack bus and if have generation on the slack bus</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">bool</span> haveSlackBus = <span class="keyword">false</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">bool</span> slackBusHaveGeneration = <span class="keyword">false</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)busType.size(); i++) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span>(busType[i] == BUS_SLACK) {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">auto</span> itb = m_busList.begin();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  std::advance(itb, i);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *itb;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsg = m_syncGeneratorList.begin(); itsg != m_syncGeneratorList.end(); itsg++) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *itsg;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>() && bus == syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]) slackBusHaveGeneration = <span class="keyword">true</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  haveSlackBus = <span class="keyword">true</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span>(!haveSlackBus) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  m_errorMsg = _(<span class="stringliteral">"There is no slack bus on the system."</span>);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span>(!slackBusHaveGeneration) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  m_errorMsg = _(<span class="stringliteral">"The slack bus don't have generation."</span>);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// Gauss-Seidel method</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  std::vector<std::complex<double> > oldVoltage; <span class="comment">// Old voltage array.</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  oldVoltage.resize(voltage.size());</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keyword">auto</span> oldBusType = busType;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordtype">int</span> iteration = 0; <span class="comment">// Current itaration number.</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// Reach the max number of iterations.</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span>(iteration >= maxIteration) {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  m_errorMsg = _(<span class="stringliteral">"The maximum number of iterations was reached."</span>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">// Update the old voltage array to current iteration values.</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numberOfBuses; i++) oldVoltage[i] = voltage[i];</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordtype">double</span> iterationError = 0.0;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numberOfBuses; i++) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span>(busType[i] == BUS_PQ) {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  std::complex<double> yeSum(0.0, 0.0);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < numberOfBuses; k++) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">if</span>(i != k) {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// Sum { Y[i,k] * E[k] } | k = 1->n; k diff i</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  yeSum += m_yBus[i][k] * voltage[k];</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="comment">// E[i] = (1/Y[i,i])*((P[i]-jQ[i])/E*[i] - Sum { Y[i,k] * E[k] (k diff i) })</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  std::complex<double> newVolt =</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  (1.0 / m_yBus[i][i]) * (std::conj(power[i]) / std::conj(voltage[i]) - yeSum);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="comment">// Apply the acceleration factor.</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  newVolt = std::complex<double>(accFactor * (newVolt.real() - voltage[i].real()) + voltage[i].real(),</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  accFactor * (newVolt.imag() - voltage[i].imag()) + voltage[i].imag());</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  voltage[i] = newVolt;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span>(busType[i] == BUS_PV) {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  std::complex<double> yeSum(0.0, 0.0);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < numberOfBuses; k++) {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span>(i != k) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// Sum { Y[i,k] * E[k] } | k = 1->n; k diff i</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  yeSum += m_yBus[i][k] * voltage[k];</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  std::complex<double> yeSumT = yeSum + (m_yBus[i][i] * voltage[i]);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">// Q[i] = - Im( E*[i] * Sum { Y[i,k] * E[k] } )</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  std::complex<double> qCalc = std::conj(voltage[i]) * yeSumT;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  power[i] = std::complex<double>(power[i].real(), -qCalc.imag());</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// E[i] = (1/Y[i,i])*((P[i]-jQ[i])/E*[i] - Sum { Y[i,k] * E[k] (k diff i) })</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  std::complex<double> newVolt =</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  (1.0 / m_yBus[i][i]) * (std::conj(power[i]) / std::conj(voltage[i]) - yeSum);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// Apply the acceleration factor.</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  newVolt = std::complex<double>(accFactor * (newVolt.real() - voltage[i].real()) + voltage[i].real(),</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  accFactor * (newVolt.imag() - voltage[i].imag()) + voltage[i].imag());</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="comment">// Keep the same voltage magnitude.</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  voltage[i] = std::complex<double>(std::abs(voltage[i]) * std::cos(std::arg(newVolt)),</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  std::abs(voltage[i]) * std::sin(std::arg(newVolt)));</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordtype">double</span> busError = std::max(std::abs(voltage[i].real() - oldVoltage[i].real()),</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  std::abs(voltage[i].imag() - oldVoltage[i].imag()));</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span>(busError > iterationError) iterationError = busError;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span>(iterationError < error) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordtype">bool</span> limitReach = <span class="keyword">false</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numberOfBuses; i++) {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span>(busType[i] == BUS_PV) {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">if</span>(reactiveLimit[i].maxLimitType == RL_LIMITED) {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">if</span>(power[i].imag() - loadPower[i].imag() > reactiveLimit[i].maxLimit) {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  power[i] =</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  std::complex<double>(power[i].real(), reactiveLimit[i].maxLimit + loadPower[i].imag());</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  busType[i] = BUS_PQ;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  reactiveLimit[i].limitReached = RL_MAX_REACHED;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  limitReach = <span class="keyword">true</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span>(reactiveLimit[i].minLimitType == RL_LIMITED) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">if</span>(power[i].imag() - loadPower[i].imag() < reactiveLimit[i].minLimit) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  power[i] =</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  std::complex<double>(power[i].real(), reactiveLimit[i].minLimit + loadPower[i].imag());</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  busType[i] = BUS_PQ;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  reactiveLimit[i].limitReached = RL_MIN_REACHED;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  limitReach = <span class="keyword">true</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">if</span>(!limitReach) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  iteration++;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// Adjust the power array.</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="comment">// TODO: Only the slack bus??</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numberOfBuses; i++) {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  std::complex<double> sBus = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < numberOfBuses; j++) sBus += voltage[i] * std::conj(voltage[j]) * std::conj(m_yBus[i][j]);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  power[i] = sBus;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  UpdateElementsPowerFlow(voltage, power, oldBusType, reactiveLimit, systemPowerBase);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div><div class="ttc" id="struct_ind_motor_electrical_data_html"><div class="ttname"><a href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00025">IndMotor.h:25</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_power_flow_8h.html">PowerFlow.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> PowerFlow::PowerFlow() : <a class="code" href="class_electric_calculation.html">ElectricCalculation</a>() {}</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> PowerFlow::PowerFlow(std::vector<Element*> elementList) : <a class="code" href="class_electric_calculation.html">ElectricCalculation</a>() { GetElementsFromList(elementList); }</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> PowerFlow::~PowerFlow() {}</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keywordtype">bool</span> PowerFlow::RunGaussSeidel(<span class="keywordtype">double</span> systemPowerBase,</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordtype">int</span> maxIteration,</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">double</span> error,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordtype">double</span> initAngle,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">double</span> accFactor)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="comment">// Calculate the Ybus.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">if</span>(!GetYBus(m_yBus, systemPowerBase)) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_errorMsg = _(<span class="stringliteral">"No buses found on the system."</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Number of buses on the system.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">int</span> numberOfBuses = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_busList.size());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::vector<BusType> busType; <span class="comment">// Bus type</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  std::vector<std::complex<double> > voltage; <span class="comment">// Voltage of buses</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  std::vector<std::complex<double> > power; <span class="comment">// Injected power</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::vector<std::complex<double> > loadPower; <span class="comment">// Only the load power</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  std::vector<ReactiveLimits> reactiveLimit; <span class="comment">// Limit of reactive power on PV buses</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  reactiveLimit.resize(numberOfBuses);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">int</span> busNumber = 0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itb = m_busList.begin(); itb != m_busList.end(); itb++) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *itb;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="comment">// Fill the bus type</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span>(data.slackBus) busType.push_back(BUS_SLACK);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="comment">// If the bus have controlled voltage, check if at least one synchronous machine is connected, then set the</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// bus type.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(data.isVoltageControlled) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordtype">bool</span> hasSyncMachine = <span class="keyword">false</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// Synchronous generator</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsg = m_syncGeneratorList.begin(); itsg != m_syncGeneratorList.end(); itsg++) {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *itsg;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span>(bus == syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0] && syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) hasSyncMachine = <span class="keyword">true</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Synchronous motor</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsm = m_syncMotorList.begin(); itsm != m_syncMotorList.end(); itsm++) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *itsm;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span>(bus == syncMotor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0] && syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) hasSyncMachine = <span class="keyword">true</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(hasSyncMachine)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  busType.push_back(BUS_PV);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  busType.push_back(BUS_PQ);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  busType.push_back(BUS_PQ);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Fill the voltages array</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span>(data.isVoltageControlled && busType[busNumber] != BUS_PQ) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  voltage.push_back(std::complex<double>(data.controlledVoltage, 0.0));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  voltage.push_back(std::complex<double>(1.0, 0.0));</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// Fill the power array</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  power.push_back(std::complex<double>(0.0, 0.0)); <span class="comment">// Initial value</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  loadPower.push_back(std::complex<double>(0.0, 0.0));</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// Synchronous generator</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsg = m_syncGeneratorList.begin(); itsg != m_syncGeneratorList.end(); itsg++) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *itsg;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>(bus == syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> childData = syncGenerator->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  power[busNumber] += std::complex<double>(childData.activePower, childData.reactivePower);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span>(busType[busNumber] == BUS_PV) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>(childData.haveMaxReactive && reactiveLimit[busNumber].maxLimitType != RL_UNLIMITED_SOURCE) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  reactiveLimit[busNumber].maxLimitType = RL_LIMITED;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  reactiveLimit[busNumber].maxLimit += childData.maxReactive;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!childData.haveMaxReactive)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  reactiveLimit[busNumber].maxLimitType = RL_UNLIMITED_SOURCE;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span>(childData.haveMinReactive && reactiveLimit[busNumber].minLimitType != RL_UNLIMITED_SOURCE) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  reactiveLimit[busNumber].minLimitType = RL_LIMITED;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  reactiveLimit[busNumber].minLimit += childData.minReactive;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!childData.haveMinReactive)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  reactiveLimit[busNumber].minLimitType = RL_UNLIMITED_SOURCE;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// Synchronous motor</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsm = m_syncMotorList.begin(); itsm != m_syncMotorList.end(); itsm++) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = *itsm;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span>(syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span>(bus == syncMotor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> childData = syncMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  power[busNumber] += std::complex<double>(-childData.activePower, childData.reactivePower);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  loadPower[busNumber] += std::complex<double>(-childData.activePower, 0.0);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(busType[busNumber] == BUS_PV) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span>(childData.haveMaxReactive && reactiveLimit[busNumber].maxLimitType != RL_UNLIMITED_SOURCE) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  reactiveLimit[busNumber].maxLimitType = RL_LIMITED;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  reactiveLimit[busNumber].maxLimit += childData.maxReactive;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!childData.haveMaxReactive)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  reactiveLimit[busNumber].maxLimitType = RL_UNLIMITED_SOURCE;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span>(childData.haveMinReactive && reactiveLimit[busNumber].minLimitType != RL_UNLIMITED_SOURCE) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  reactiveLimit[busNumber].minLimitType = RL_LIMITED;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  reactiveLimit[busNumber].minLimit += childData.minReactive;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!childData.haveMinReactive)</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  reactiveLimit[busNumber].minLimitType = RL_UNLIMITED_SOURCE;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// Load</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itl = m_loadList.begin(); itl != m_loadList.end(); itl++) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="class_load.html">Load</a>* load = *itl;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span>(load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(bus == load-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> childData = load->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(childData.loadType == CONST_POWER) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  power[busNumber] += std::complex<double>(-childData.activePower, -childData.reactivePower);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  loadPower[busNumber] += std::complex<double>(-childData.activePower, -childData.reactivePower);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="comment">// Induction motor</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itim = m_indMotorList.begin(); itim != m_indMotorList.end(); itim++) {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = *itim;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">if</span>(indMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">if</span>(bus == indMotor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]) {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> childData = indMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  power[busNumber] += std::complex<double>(-childData.activePower, -childData.reactivePower);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  loadPower[busNumber] += std::complex<double>(-childData.activePower, -childData.reactivePower);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  busNumber++;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// Check if have slack bus and if have generation on the slack bus</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">bool</span> haveSlackBus = <span class="keyword">false</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">bool</span> slackBusHaveGeneration = <span class="keyword">false</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)busType.size(); i++) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span>(busType[i] == BUS_SLACK) {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">auto</span> itb = m_busList.begin();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  std::advance(itb, i);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *itb;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itsg = m_syncGeneratorList.begin(); itsg != m_syncGeneratorList.end(); itsg++) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = *itsg;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span>(syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>() && bus == syncGenerator-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0]) slackBusHaveGeneration = <span class="keyword">true</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  haveSlackBus = <span class="keyword">true</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span>(!haveSlackBus) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  m_errorMsg = _(<span class="stringliteral">"There is no slack bus on the system."</span>);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span>(!slackBusHaveGeneration) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  m_errorMsg = _(<span class="stringliteral">"The slack bus don't have generation."</span>);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="comment">// Gauss-Seidel method</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  std::vector<std::complex<double> > oldVoltage; <span class="comment">// Old voltage array.</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  oldVoltage.resize(voltage.size());</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keyword">auto</span> oldBusType = busType;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordtype">int</span> iteration = 0; <span class="comment">// Current itaration number.</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">while</span>(<span class="keyword">true</span>) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// Reach the max number of iterations.</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span>(iteration >= maxIteration) {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  m_errorMsg = _(<span class="stringliteral">"The maximum number of iterations was reached."</span>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">// Update the old voltage array to current iteration values.</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numberOfBuses; i++) oldVoltage[i] = voltage[i];</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordtype">double</span> iterationError = 0.0;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numberOfBuses; i++) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span>(busType[i] == BUS_PQ) {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  std::complex<double> yeSum(0.0, 0.0);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < numberOfBuses; k++) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">if</span>(i != k) {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// Sum { Y[i,k] * E[k] } | k = 1->n; k diff i</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  yeSum += m_yBus[i][k] * voltage[k];</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="comment">// E[i] = (1/Y[i,i])*((P[i]-jQ[i])/E*[i] - Sum { Y[i,k] * E[k] (k diff i) })</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  std::complex<double> newVolt =</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  (1.0 / m_yBus[i][i]) * (std::conj(power[i]) / std::conj(voltage[i]) - yeSum);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="comment">// Apply the acceleration factor.</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  newVolt = std::complex<double>(accFactor * (newVolt.real() - voltage[i].real()) + voltage[i].real(),</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  accFactor * (newVolt.imag() - voltage[i].imag()) + voltage[i].imag());</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  voltage[i] = newVolt;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span>(busType[i] == BUS_PV) {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  std::complex<double> yeSum(0.0, 0.0);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < numberOfBuses; k++) {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">if</span>(i != k) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// Sum { Y[i,k] * E[k] } | k = 1->n; k diff i</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  yeSum += m_yBus[i][k] * voltage[k];</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  std::complex<double> yeSumT = yeSum + (m_yBus[i][i] * voltage[i]);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">// Q[i] = - Im( E*[i] * Sum { Y[i,k] * E[k] } )</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  std::complex<double> qCalc = std::conj(voltage[i]) * yeSumT;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  power[i] = std::complex<double>(power[i].real(), -qCalc.imag());</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">// E[i] = (1/Y[i,i])*((P[i]-jQ[i])/E*[i] - Sum { Y[i,k] * E[k] (k diff i) })</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  std::complex<double> newVolt =</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  (1.0 / m_yBus[i][i]) * (std::conj(power[i]) / std::conj(voltage[i]) - yeSum);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// Apply the acceleration factor.</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  newVolt = std::complex<double>(accFactor * (newVolt.real() - voltage[i].real()) + voltage[i].real(),</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  accFactor * (newVolt.imag() - voltage[i].imag()) + voltage[i].imag());</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="comment">// Keep the same voltage magnitude.</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  voltage[i] = std::complex<double>(std::abs(voltage[i]) * std::cos(std::arg(newVolt)),</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  std::abs(voltage[i]) * std::sin(std::arg(newVolt)));</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordtype">double</span> busError = std::max(std::abs(voltage[i].real() - oldVoltage[i].real()),</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  std::abs(voltage[i].imag() - oldVoltage[i].imag()));</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">if</span>(busError > iterationError) iterationError = busError;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">if</span>(iterationError < error) {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordtype">bool</span> limitReach = <span class="keyword">false</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numberOfBuses; i++) {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span>(busType[i] == BUS_PV) {</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">if</span>(reactiveLimit[i].maxLimitType == RL_LIMITED) {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">if</span>(power[i].imag() - loadPower[i].imag() > reactiveLimit[i].maxLimit) {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  power[i] =</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  std::complex<double>(power[i].real(), reactiveLimit[i].maxLimit + loadPower[i].imag());</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  busType[i] = BUS_PQ;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  reactiveLimit[i].limitReached = RL_MAX_REACHED;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  limitReach = <span class="keyword">true</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span>(reactiveLimit[i].minLimitType == RL_LIMITED) {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">if</span>(power[i].imag() - loadPower[i].imag() < reactiveLimit[i].minLimit) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  power[i] =</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  std::complex<double>(power[i].real(), reactiveLimit[i].minLimit + loadPower[i].imag());</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  busType[i] = BUS_PQ;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  reactiveLimit[i].limitReached = RL_MIN_REACHED;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  limitReach = <span class="keyword">true</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">if</span>(!limitReach) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  iteration++;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// Adjust the power array.</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="comment">// TODO: Only the slack bus??</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < numberOfBuses; i++) {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  std::complex<double> sBus = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < numberOfBuses; j++) sBus += voltage[i] * std::conj(voltage[j]) * std::conj(m_yBus[i][j]);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  power[i] = sBus;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  UpdateElementsPowerFlow(voltage, power, oldBusType, reactiveLimit, systemPowerBase);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div><div class="ttc" id="struct_ind_motor_electrical_data_html"><div class="ttname"><a href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00025">IndMotor.h:25</a></div></div> <div class="ttc" id="struct_sync_generator_electrical_data_html"><div class="ttname"><a href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00025">SyncGenerator.h:25</a></div></div> <div class="ttc" id="class_element_html_a7dce6c1b97facecf3e3b2f1555858b09"><div class="ttname"><a href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">Element::GetParentList</a></div><div class="ttdeci">virtual std::vector< Element * > GetParentList() const</div><div class="ttdoc">Get the parent list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00506">Element.h:506</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="struct_bus_electrical_data_html"><div class="ttname"><a href="struct_bus_electrical_data.html">BusElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00024">Bus.h:24</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="class_element_html_a57c84a8e6eb80f0fea6e23cdd439d5aa"><div class="ttname"><a href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">Element::IsOnline</a></div><div class="ttdeci">bool IsOnline() const</div><div class="ttdoc">Checks if the element is online or offline. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00227">Element.h:227</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> <div class="ttc" id="struct_load_electrical_data_html"><div class="ttname"><a href="struct_load_electrical_data.html">LoadElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00026">Load.h:26</a></div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> -<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00033">IndMotor.h:33</a></div></div> -<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> +<div class="ttc" id="_power_flow_8h_html"><div class="ttname"><a href="_power_flow_8h.html">PowerFlow.h</a></div></div> +<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdoc">Induction motor power element. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00040">IndMotor.h:40</a></div></div> +<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> <div class="ttc" id="struct_sync_motor_electrical_data_html"><div class="ttname"><a href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00025">SyncMotor.h:25</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_power_flow_8h.html b/docs/doxygen/html/_power_flow_8h.html new file mode 100644 index 0000000..25a2ff6 --- /dev/null +++ b/docs/doxygen/html/_power_flow_8h.html @@ -0,0 +1,117 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/PowerFlow.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_power_flow_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">PowerFlow.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>"</code><br /> +<code>#include <wx/string.h></code><br /> +<code>#include <wx/intl.h></code><br /> +</div> +<p><a href="_power_flow_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_power_flow.html">PowerFlow</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the power flow. <a href="class_power_flow.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_power_flow_8h.html">PowerFlow.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_power_flow_8h_source.html b/docs/doxygen/html/_power_flow_8h_source.html index 677dd50..1828677 100644 --- a/docs/doxygen/html/_power_flow_8h_source.html +++ b/docs/doxygen/html/_power_flow_8h_source.html @@ -88,15 +88,15 @@ $(document).ready(function(){initNavTree('_power_flow_8h_source.html','');}); <div class="title">PowerFlow.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef POWERFLOW_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define POWERFLOW_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/string.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <wx/intl.h></span> <span class="comment">//_()</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="class_power_flow.html"> 26</a></span> <span class="keyword">class </span><a class="code" href="class_power_flow.html">PowerFlow</a> : <span class="keyword">public</span> <a class="code" href="class_electric_calculation.html">ElectricCalculation</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <a class="code" href="class_power_flow.html">PowerFlow</a>();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="class_power_flow.html">PowerFlow</a>(std::vector<Element*> elementList);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  ~<a class="code" href="class_power_flow.html">PowerFlow</a>();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> RunGaussSeidel(<span class="keywordtype">double</span> systemPowerBase = 100e6,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">int</span> maxIteration = 5000,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">double</span> error = 1e-6,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> initAngle = 0.0,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">double</span> accFactor = 1.0);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> wxString GetErrorMessage() { <span class="keywordflow">return</span> m_errorMsg; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  std::vector<std::vector<std::complex<double> > > m_yBus;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  wxString m_errorMsg = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> };</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#endif // POWERFLOW_H</span></div><div class="ttc" id="class_power_flow_html"><div class="ttname"><a href="class_power_flow.html">PowerFlow</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_flow_8h_source.html#l00026">PowerFlow.h:26</a></div></div> -<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div></div> -<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> +<a href="_power_flow_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef POWERFLOW_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define POWERFLOW_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/string.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <wx/intl.h></span> <span class="comment">//_()</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_power_flow.html"> 33</a></span> <span class="keyword">class </span><a class="code" href="class_power_flow.html">PowerFlow</a> : <span class="keyword">public</span> <a class="code" href="class_electric_calculation.html">ElectricCalculation</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="class_power_flow.html">PowerFlow</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="class_power_flow.html">PowerFlow</a>(std::vector<Element*> elementList);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  ~<a class="code" href="class_power_flow.html">PowerFlow</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> RunGaussSeidel(<span class="keywordtype">double</span> systemPowerBase = 100e6,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">int</span> maxIteration = 5000,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">double</span> error = 1e-6,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">double</span> initAngle = 0.0,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">double</span> accFactor = 1.0);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> wxString GetErrorMessage() { <span class="keywordflow">return</span> m_errorMsg; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  std::vector<std::vector<std::complex<double> > > m_yBus;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  wxString m_errorMsg = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> };</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#endif // POWERFLOW_H</span></div><div class="ttc" id="class_power_flow_html"><div class="ttname"><a href="class_power_flow.html">PowerFlow</a></div><div class="ttdoc">Calculate the power flow. </div><div class="ttdef"><b>Definition:</b> <a href="_power_flow_8h_source.html#l00033">PowerFlow.h:33</a></div></div> +<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div></div> +<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>PowerFlow.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_power_flow_8h.html">PowerFlow.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_properties_data_8cpp_source.html b/docs/doxygen/html/_properties_data_8cpp_source.html index 768b0fb..9894007 100644 --- a/docs/doxygen/html/_properties_data_8cpp_source.html +++ b/docs/doxygen/html/_properties_data_8cpp_source.html @@ -88,7 +88,8 @@ $(document).ready(function(){initNavTree('_properties_data_8cpp_source.html','') <div class="title">PropertiesData.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "PropertiesData.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> PropertiesData::PropertiesData() {}</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> PropertiesData::~PropertiesData() {}</div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_properties_data_8h.html">PropertiesData.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> PropertiesData::PropertiesData() {}</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> PropertiesData::~PropertiesData() {}</div><div class="ttc" id="_properties_data_8h_html"><div class="ttname"><a href="_properties_data_8h.html">PropertiesData.h</a></div></div> +</div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> diff --git a/docs/doxygen/html/_properties_data_8h.html b/docs/doxygen/html/_properties_data_8h.html new file mode 100644 index 0000000..da24e36 --- /dev/null +++ b/docs/doxygen/html/_properties_data_8h.html @@ -0,0 +1,133 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/PropertiesData.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_properties_data_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#enum-members">Enumerations</a> </div> + <div class="headertitle"> +<div class="title">PropertiesData.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "wx/language.h"</code><br /> +<code>#include "<a class="el" href="_element_8h_source.html">Element.h</a>"</code><br /> +<code>#include "<a class="el" href="_power_element_8h_source.html">PowerElement.h</a>"</code><br /> +</div> +<p><a href="_properties_data_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_simulation_data.html">SimulationData</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_general_data.html">GeneralData</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_properties_data.html">PropertiesData</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">General and simulation data manager. <a href="class_properties_data.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr class="memitem:ac18bc6e3749817eb86c02a2e65d4e68b"><td class="memItemLeft" align="right" valign="top"><a id="ac18bc6e3749817eb86c02a2e65d4e68b"></a>enum  </td><td class="memItemRight" valign="bottom"><b>PowerFlowMethod</b> { <b>GAUSS_SEIDEL</b> = 0, +<b>NEWTON_RAPHSON</b> + }</td></tr> +<tr class="separator:ac18bc6e3749817eb86c02a2e65d4e68b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a22c433d87328b2b1a796559b51b82cc5"><td class="memItemLeft" align="right" valign="top"><a id="a22c433d87328b2b1a796559b51b82cc5"></a>enum  </td><td class="memItemRight" valign="bottom"><b>GUITheme</b> { <b>THEME_LIGHT</b> = 0, +<b>THEME_DARK</b> + }</td></tr> +<tr class="separator:a22c433d87328b2b1a796559b51b82cc5"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_properties_data_8h.html">PropertiesData.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_properties_data_8h.js b/docs/doxygen/html/_properties_data_8h.js new file mode 100644 index 0000000..ae77480 --- /dev/null +++ b/docs/doxygen/html/_properties_data_8h.js @@ -0,0 +1,14 @@ +var _properties_data_8h = +[ + [ "SimulationData", "struct_simulation_data.html", "struct_simulation_data" ], + [ "GeneralData", "struct_general_data.html", "struct_general_data" ], + [ "PropertiesData", "class_properties_data.html", "class_properties_data" ], + [ "GUITheme", "_properties_data_8h.html#a22c433d87328b2b1a796559b51b82cc5", [ + [ "THEME_LIGHT", "_properties_data_8h.html#a22c433d87328b2b1a796559b51b82cc5a36b54867355898cdf8184bc1b1b1ab64", null ], + [ "THEME_DARK", "_properties_data_8h.html#a22c433d87328b2b1a796559b51b82cc5aa81179a87e35561c97eec4e1b2b1aa47", null ] + ] ], + [ "PowerFlowMethod", "_properties_data_8h.html#ac18bc6e3749817eb86c02a2e65d4e68b", [ + [ "GAUSS_SEIDEL", "_properties_data_8h.html#ac18bc6e3749817eb86c02a2e65d4e68ba80c952bb305178615486f9a8ea95349d", null ], + [ "NEWTON_RAPHSON", "_properties_data_8h.html#ac18bc6e3749817eb86c02a2e65d4e68ba8f764af6b30d2774aa12bfd9ecbc3fd5", null ] + ] ] +];
\ No newline at end of file diff --git a/docs/doxygen/html/_properties_data_8h_source.html b/docs/doxygen/html/_properties_data_8h_source.html index d475685..10b41d3 100644 --- a/docs/doxygen/html/_properties_data_8h_source.html +++ b/docs/doxygen/html/_properties_data_8h_source.html @@ -88,19 +88,19 @@ $(document).ready(function(){initNavTree('_properties_data_8h_source.html','');} <div class="title">PropertiesData.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef PROPERTIESDATA_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define PROPERTIESDATA_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "wx/language.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">enum</span> PowerFlowMethod { GAUSS_SEIDEL = 0, NEWTON_RAPHSON };</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">enum</span> GUITheme { THEME_LIGHT = 0, THEME_DARK };</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="struct_simulation_data.html"> 28</a></span> <span class="keyword">struct </span><a class="code" href="struct_simulation_data.html">SimulationData</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="comment">// General simulation data</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> basePower = 100.0;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> basePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">bool</span> faultAfterPowerFlow = <span class="keyword">true</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">bool</span> scPowerAfterPowerFlow = <span class="keyword">true</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Power flow</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  PowerFlowMethod powerFlowMethod = GAUSS_SEIDEL;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> accFator = 1.0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">double</span> powerFlowTolerance = 1e-7;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">int</span> powerFlowMaxIterations = 5000;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">// Stability</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">double</span> stabilityFrequency = 60.0;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">double</span> timeStep = 1e-2;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">double</span> stabilitySimulationTime = 10.0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> stabilityTolerance = 1e-8;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">int</span> stabilityMaxIterations = 100;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">int</span> controlTimeStepRatio = 10;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> plotTime = 1e-2;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">bool</span> useCOI = <span class="keyword">true</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct_general_data.html"> 52</a></span> <span class="keyword">struct </span><a class="code" href="struct_general_data.html">GeneralData</a> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxLanguage language = wxLANGUAGE_ENGLISH;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  GUITheme theme = THEME_LIGHT;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="class_properties_data.html"> 57</a></span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</a></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  ~<a class="code" href="class_properties_data.html">PropertiesData</a>();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="struct_simulation_data.html">SimulationData</a> GetSimulationPropertiesData()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_simulData; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">void</span> SetSimulationPropertiesData(<a class="code" href="struct_simulation_data.html">SimulationData</a> simulationData) { m_simulData = simulationData; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="struct_general_data.html">GeneralData</a> GetGeneralPropertiesData()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_genData; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">void</span> SetGeneralPropertiesData(<a class="code" href="struct_general_data.html">GeneralData</a> generalData) { m_genData = generalData; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="struct_simulation_data.html">SimulationData</a> m_simulData;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="struct_general_data.html">GeneralData</a> m_genData;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> };</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#endif // PROPERTIESDATA_H</span></div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00057">PropertiesData.h:57</a></div></div> +<a href="_properties_data_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef PROPERTIESDATA_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define PROPERTIESDATA_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "wx/language.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">enum</span> PowerFlowMethod { GAUSS_SEIDEL = 0, NEWTON_RAPHSON };</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">enum</span> GUITheme { THEME_LIGHT = 0, THEME_DARK };</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="struct_simulation_data.html"> 28</a></span> <span class="keyword">struct </span><a class="code" href="struct_simulation_data.html">SimulationData</a> {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="comment">// General simulation data</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> basePower = 100.0;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> basePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">bool</span> faultAfterPowerFlow = <span class="keyword">true</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">bool</span> scPowerAfterPowerFlow = <span class="keyword">true</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="comment">// Power flow</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  PowerFlowMethod powerFlowMethod = GAUSS_SEIDEL;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> accFator = 1.0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">double</span> powerFlowTolerance = 1e-7;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">int</span> powerFlowMaxIterations = 5000;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">// Stability</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">double</span> stabilityFrequency = 60.0;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">double</span> timeStep = 1e-2;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">double</span> stabilitySimulationTime = 10.0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> stabilityTolerance = 1e-8;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">int</span> stabilityMaxIterations = 100;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">int</span> controlTimeStepRatio = 10;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> plotTime = 1e-2;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">bool</span> useCOI = <span class="keyword">true</span>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="struct_general_data.html"> 52</a></span> <span class="keyword">struct </span><a class="code" href="struct_general_data.html">GeneralData</a> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxLanguage language = wxLANGUAGE_ENGLISH;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  GUITheme theme = THEME_LIGHT;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="class_properties_data.html"> 64</a></span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</a></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  ~<a class="code" href="class_properties_data.html">PropertiesData</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="struct_simulation_data.html">SimulationData</a> GetSimulationPropertiesData()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_simulData; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">void</span> SetSimulationPropertiesData(<a class="code" href="struct_simulation_data.html">SimulationData</a> simulationData) { m_simulData = simulationData; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="struct_general_data.html">GeneralData</a> GetGeneralPropertiesData()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_genData; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">void</span> SetGeneralPropertiesData(<a class="code" href="struct_general_data.html">GeneralData</a> generalData) { m_genData = generalData; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="struct_simulation_data.html">SimulationData</a> m_simulData;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="struct_general_data.html">GeneralData</a> m_genData;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> };</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#endif // PROPERTIESDATA_H</span></div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdoc">General and simulation data manager. </div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00064">PropertiesData.h:64</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220cca"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a></div><div class="ttdeci">ElectricalUnit</div><div class="ttdoc">Electrical units. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00028">PowerElement.h:28</a></div></div> -<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div><div class="ttdoc">Class to manage color of OpenGL. </div></div> +<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div></div> <div class="ttc" id="struct_simulation_data_html"><div class="ttname"><a href="struct_simulation_data.html">SimulationData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00028">PropertiesData.h:28</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00039">PowerElement.h:39</a></div></div> -<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div><div class="ttdoc">Switching data of power elements. </div></div> +<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div></div> <div class="ttc" id="struct_general_data_html"><div class="ttname"><a href="struct_general_data.html">GeneralData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00052">PropertiesData.h:52</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>PropertiesData.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_properties_data_8h.html">PropertiesData.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_rate_limiter_8cpp_source.html b/docs/doxygen/html/_rate_limiter_8cpp_source.html index 8cd75ac..f44a803 100644 --- a/docs/doxygen/html/_rate_limiter_8cpp_source.html +++ b/docs/doxygen/html/_rate_limiter_8cpp_source.html @@ -88,11 +88,11 @@ $(document).ready(function(){initNavTree('_rate_limiter_8cpp_source.html','');}) <div class="title">RateLimiter.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_rate_limiter_8h.html">RateLimiter.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_rate_limiter_form_8h.html">RateLimiterForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> RateLimiter::RateLimiter(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_width = m_height = 36.0;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <a class="code" href="class_node.html">Node</a>* nodeIn = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-18, 0), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  nodeIn->StartMove(m_position);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <a class="code" href="class_node.html">Node</a>* nodeOut = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(18, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_nodeList.push_back(nodeIn);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> RateLimiter::~RateLimiter() {}</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580"> 34</a></span> <span class="keywordtype">void</span> <a class="code" href="class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580">RateLimiter::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword"></span>{</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  glLineWidth(1.0);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  DrawRectangle(m_position, m_width + borderSize, m_height + borderSize);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Plot symbol.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  std::vector<wxPoint2DDouble> axis;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  axis.push_back(m_position + wxPoint2DDouble(-13, 0));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  axis.push_back(m_position + wxPoint2DDouble(13, 0));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  axis.push_back(m_position + wxPoint2DDouble(0, -13));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  axis.push_back(m_position + wxPoint2DDouble(0, 13));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  DrawLine(axis, GL_LINES);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  glLineWidth(2.0);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::vector<wxPoint2DDouble> limSymbol;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  limSymbol.push_back(m_position + wxPoint2DDouble(10, -10));</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  limSymbol.push_back(m_position + wxPoint2DDouble(-10, 10));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  glColor4d(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  DrawLine(limSymbol);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  DrawNodes();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60"> 66</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60">RateLimiter::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="class_rate_limiter_form.html">RateLimiterForm</a>* form = <span class="keyword">new</span> <a class="code" href="class_rate_limiter_form.html">RateLimiterForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  form->Destroy();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  form->Destroy();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a3eb4d933b1d069808617306c78835f3e"> 77</a></span> <span class="keywordtype">void</span> <a class="code" href="class_rate_limiter.html#a3eb4d933b1d069808617306c78835f3e">RateLimiter::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_angle += 90.0;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_angle -= 90.0;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_angle = 0.0;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_angle = 270.0;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  UpdatePoints();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keywordtype">void</span> RateLimiter::UpdatePoints()</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -18));</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -18));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29"> 113</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">RateLimiter::Solve</a>(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">double</span> rate = (input - m_output) / timeStep;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">bool</span> reachLimit = <span class="keyword">false</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(rate > m_upLimit) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  rate = m_upLimit;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  reachLimit = <span class="keyword">true</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rate < m_lowLimit) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  rate = m_lowLimit;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  reachLimit = <span class="keyword">true</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>(reachLimit)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_output += rate * timeStep;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_output = input;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823"> 133</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823">RateLimiter::GetCopy</a>()</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="class_rate_limiter.html">RateLimiter</a>* copy = <span class="keyword">new</span> <a class="code" href="class_rate_limiter.html">RateLimiter</a>(m_elementID);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_rate_limiter_8h.html">RateLimiter.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_rate_limiter_form_8h.html">RateLimiterForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> RateLimiter::RateLimiter(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  m_width = m_height = 36.0;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <a class="code" href="class_node.html">Node</a>* nodeIn = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-18, 0), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  nodeIn->StartMove(m_position);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <a class="code" href="class_node.html">Node</a>* nodeOut = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(18, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_nodeList.push_back(nodeIn);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> RateLimiter::~RateLimiter() {}</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580"> 34</a></span> <span class="keywordtype">void</span> <a class="code" href="class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580">RateLimiter::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword"></span>{</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  glLineWidth(1.0);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  DrawRectangle(m_position, m_width + borderSize, m_height + borderSize);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">// Plot symbol.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  std::vector<wxPoint2DDouble> axis;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  axis.push_back(m_position + wxPoint2DDouble(-13, 0));</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  axis.push_back(m_position + wxPoint2DDouble(13, 0));</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  axis.push_back(m_position + wxPoint2DDouble(0, -13));</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  axis.push_back(m_position + wxPoint2DDouble(0, 13));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  DrawLine(axis, GL_LINES);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  glLineWidth(2.0);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::vector<wxPoint2DDouble> limSymbol;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  limSymbol.push_back(m_position + wxPoint2DDouble(10, -10));</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  limSymbol.push_back(m_position + wxPoint2DDouble(-10, 10));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  glColor4d(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  DrawLine(limSymbol);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  DrawNodes();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60"> 66</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60">RateLimiter::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="class_rate_limiter_form.html">RateLimiterForm</a>* form = <span class="keyword">new</span> <a class="code" href="class_rate_limiter_form.html">RateLimiterForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">if</span>(form->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  form->Destroy();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  form->Destroy();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a3eb4d933b1d069808617306c78835f3e"> 77</a></span> <span class="keywordtype">void</span> <a class="code" href="class_rate_limiter.html#a3eb4d933b1d069808617306c78835f3e">RateLimiter::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  m_angle += 90.0;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_angle -= 90.0;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  m_angle = 0.0;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_angle = 270.0;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  UpdatePoints();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keywordtype">void</span> RateLimiter::UpdatePoints()</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -18));</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(18, 0));</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-18, 0));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, 18));</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -18));</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29"> 113</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">RateLimiter::Solve</a>(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">double</span> rate = (input - m_output) / timeStep;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">bool</span> reachLimit = <span class="keyword">false</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(rate > m_upLimit) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  rate = m_upLimit;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  reachLimit = <span class="keyword">true</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rate < m_lowLimit) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  rate = m_lowLimit;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  reachLimit = <span class="keyword">true</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>(reachLimit)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_output += rate * timeStep;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_output = input;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823"> 133</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823">RateLimiter::GetCopy</a>()</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="class_rate_limiter.html">RateLimiter</a>* copy = <span class="keyword">new</span> <a class="code" href="class_rate_limiter.html">RateLimiter</a>(m_elementID);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> <div class="ttc" id="class_rate_limiter_html_a7d16df402b56e0025bab076aa071be60"><div class="ttname"><a href="class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60">RateLimiter::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8cpp_source.html#l00066">RateLimiter.cpp:66</a></div></div> <div class="ttc" id="class_rate_limiter_html"><div class="ttname"><a href="class_rate_limiter.html">RateLimiter</a></div><div class="ttdoc">Limits the rising and/or falling rate. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00032">RateLimiter.h:32</a></div></div> -<div class="ttc" id="class_rate_limiter_html_a2697e0f56b574739651fa2126b315e29"><div class="ttname"><a href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">RateLimiter::Solve</a></div><div class="ttdeci">virtual bool Solve(double input, double timeStep)</div><div class="ttdoc">Calculate the rate and limits it if exceeds. The rate is calculated by: is the current input a...</div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8cpp_source.html#l00113">RateLimiter.cpp:113</a></div></div> +<div class="ttc" id="class_rate_limiter_html_a2697e0f56b574739651fa2126b315e29"><div class="ttname"><a href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">RateLimiter::Solve</a></div><div class="ttdeci">virtual bool Solve(double input, double timeStep)</div><div class="ttdoc">Calculate the rate and limits it if exceeds. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8cpp_source.html#l00113">RateLimiter.cpp:113</a></div></div> <div class="ttc" id="_rate_limiter_8h_html"><div class="ttname"><a href="_rate_limiter_8h.html">RateLimiter.h</a></div></div> <div class="ttc" id="class_rate_limiter_html_a3eb4d933b1d069808617306c78835f3e"><div class="ttname"><a href="class_rate_limiter.html#a3eb4d933b1d069808617306c78835f3e">RateLimiter::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8cpp_source.html#l00077">RateLimiter.cpp:77</a></div></div> <div class="ttc" id="_rate_limiter_form_8h_html"><div class="ttname"><a href="_rate_limiter_form_8h.html">RateLimiterForm.h</a></div></div> diff --git a/docs/doxygen/html/_rate_limiter_8h_source.html b/docs/doxygen/html/_rate_limiter_8h_source.html index b956dd1..3374e92 100644 --- a/docs/doxygen/html/_rate_limiter_8h_source.html +++ b/docs/doxygen/html/_rate_limiter_8h_source.html @@ -88,11 +88,11 @@ $(document).ready(function(){initNavTree('_rate_limiter_8h_source.html','');}); <div class="title">RateLimiter.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_rate_limiter_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef RATELIMITER_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define RATELIMITER_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_rate_limiter_form.html">RateLimiterForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_rate_limiter.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_rate_limiter.html">RateLimiter</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_rate_limiter.html">RateLimiter</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ~<a class="code" href="class_rate_limiter.html">RateLimiter</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#addf0eef395781b8584063a9061be59dc"> 39</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_rate_limiter.html#addf0eef395781b8584063a9061be59dc">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a7c1ce7440e82613b455054dd8447f147"> 40</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_rate_limiter.html#a7c1ce7440e82613b455054dd8447f147">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_rate_limiter.html#a3eb4d933b1d069808617306c78835f3e">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">double</span> GetUpLimit()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_upLimit; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> GetLowLimit()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_lowLimit; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">void</span> SetUpLimit(<span class="keywordtype">double</span> upLimit) { m_upLimit = upLimit; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">void</span> SetLowLimit(<span class="keywordtype">double</span> lowLimit) { m_lowLimit = lowLimit; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">Solve</a>(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823">GetCopy</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">double</span> m_upLimit = 5.0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">double</span> m_lowLimit = -5.0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#endif // RATELIMITER_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_rate_limiter_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef RATELIMITER_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define RATELIMITER_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_rate_limiter_form.html">RateLimiterForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_rate_limiter.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_rate_limiter.html">RateLimiter</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_rate_limiter.html">RateLimiter</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  ~<a class="code" href="class_rate_limiter.html">RateLimiter</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#addf0eef395781b8584063a9061be59dc"> 39</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_rate_limiter.html#addf0eef395781b8584063a9061be59dc">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="class_rate_limiter.html#a7c1ce7440e82613b455054dd8447f147"> 40</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_rate_limiter.html#a7c1ce7440e82613b455054dd8447f147">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_rate_limiter.html#a3eb4d933b1d069808617306c78835f3e">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">double</span> GetUpLimit()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_upLimit; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> GetLowLimit()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_lowLimit; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">void</span> SetUpLimit(<span class="keywordtype">double</span> upLimit) { m_upLimit = upLimit; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">void</span> SetLowLimit(<span class="keywordtype">double</span> lowLimit) { m_lowLimit = lowLimit; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">Solve</a>(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823">GetCopy</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">double</span> m_upLimit = 5.0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">double</span> m_lowLimit = -5.0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#endif // RATELIMITER_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_rate_limiter_html_a7d16df402b56e0025bab076aa071be60"><div class="ttname"><a href="class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60">RateLimiter::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8cpp_source.html#l00066">RateLimiter.cpp:66</a></div></div> <div class="ttc" id="class_rate_limiter_html_a7c1ce7440e82613b455054dd8447f147"><div class="ttname"><a href="class_rate_limiter.html#a7c1ce7440e82613b455054dd8447f147">RateLimiter::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00040">RateLimiter.h:40</a></div></div> <div class="ttc" id="class_rate_limiter_html"><div class="ttname"><a href="class_rate_limiter.html">RateLimiter</a></div><div class="ttdoc">Limits the rising and/or falling rate. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8h_source.html#l00032">RateLimiter.h:32</a></div></div> -<div class="ttc" id="class_rate_limiter_html_a2697e0f56b574739651fa2126b315e29"><div class="ttname"><a href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">RateLimiter::Solve</a></div><div class="ttdeci">virtual bool Solve(double input, double timeStep)</div><div class="ttdoc">Calculate the rate and limits it if exceeds. The rate is calculated by: is the current input a...</div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8cpp_source.html#l00113">RateLimiter.cpp:113</a></div></div> +<div class="ttc" id="class_rate_limiter_html_a2697e0f56b574739651fa2126b315e29"><div class="ttname"><a href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">RateLimiter::Solve</a></div><div class="ttdeci">virtual bool Solve(double input, double timeStep)</div><div class="ttdoc">Calculate the rate and limits it if exceeds. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8cpp_source.html#l00113">RateLimiter.cpp:113</a></div></div> <div class="ttc" id="_control_element_8h_html"><div class="ttname"><a href="_control_element_8h.html">ControlElement.h</a></div><div class="ttdoc">Base class of a control element. Provide general methods to other control classes. </div></div> <div class="ttc" id="class_rate_limiter_html_a3eb4d933b1d069808617306c78835f3e"><div class="ttname"><a href="class_rate_limiter.html#a3eb4d933b1d069808617306c78835f3e">RateLimiter::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_rate_limiter_8cpp_source.html#l00077">RateLimiter.cpp:77</a></div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> diff --git a/docs/doxygen/html/_reactive_shunt_element_form_8cpp_source.html b/docs/doxygen/html/_reactive_shunt_element_form_8cpp_source.html index 0b4af60..223e470 100644 --- a/docs/doxygen/html/_reactive_shunt_element_form_8cpp_source.html +++ b/docs/doxygen/html/_reactive_shunt_element_form_8cpp_source.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('_reactive_shunt_element_form_8cpp_sour <div class="title">ReactiveShuntElementForm.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_reactive_shunt_element_form_8h.html">ReactiveShuntElementForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_switching_form_8h.html">SwitchingForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "Capacitor.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "Inductor.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> ReactiveShuntElementForm::ReactiveShuntElementForm(wxWindow* parent, <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  : <a class="code" href="class_reactive_shunt_element_form_base.html">ReactiveShuntElementFormBase</a>(parent)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = capacitor->GetElectricalData();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Capacitor::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_choiceReactivePower->SetSelection(0);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_choiceReactivePower->SetSelection(1);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_parent = parent;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_capacitor = capacitor;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> ReactiveShuntElementForm::ReactiveShuntElementForm(wxWindow* parent, <a class="code" href="class_inductor.html">Inductor</a>* inductor)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  : <a class="code" href="class_reactive_shunt_element_form_base.html">ReactiveShuntElementFormBase</a>(parent)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = inductor->GetElectricalData();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Inductor::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_choiceReactivePower->SetSelection(0);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_choiceReactivePower->SetSelection(1);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_parent = parent;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_inductor = inductor;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> ReactiveShuntElementForm::~ReactiveShuntElementForm() {}</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keywordtype">void</span> ReactiveShuntElementForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keywordtype">void</span> ReactiveShuntElementForm::OnStabilityButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span>(m_capacitor) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_capacitor);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  swForm.SetTitle(_(<span class="stringliteral">"Capacitor: Switching"</span>));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  swForm.ShowModal();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_inductor) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_inductor);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  swForm.SetTitle(_(<span class="stringliteral">"Inductor: Switching"</span>));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  swForm.ShowModal();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keywordtype">bool</span> ReactiveShuntElementForm::ValidateData()</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span>(m_capacitor) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span>(!m_capacitor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_capacitor->SetElectricalData(data);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_inductor) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span>(!m_inductor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  m_inductor->SetElectricalData(data);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> }</div><div class="ttc" id="_reactive_shunt_element_form_8h_html"><div class="ttname"><a href="_reactive_shunt_element_form_8h.html">ReactiveShuntElementForm.h</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_reactive_shunt_element_form_8h.html">ReactiveShuntElementForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_switching_form_8h.html">SwitchingForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_capacitor_8h.html">Capacitor.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_inductor_8h.html">Inductor.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> ReactiveShuntElementForm::ReactiveShuntElementForm(wxWindow* parent, <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  : <a class="code" href="class_reactive_shunt_element_form_base.html">ReactiveShuntElementFormBase</a>(parent)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = capacitor->GetElectricalData();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Capacitor::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_choiceReactivePower->SetSelection(0);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_choiceReactivePower->SetSelection(1);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_parent = parent;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_capacitor = capacitor;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> ReactiveShuntElementForm::ReactiveShuntElementForm(wxWindow* parent, <a class="code" href="class_inductor.html">Inductor</a>* inductor)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  : <a class="code" href="class_reactive_shunt_element_form_base.html">ReactiveShuntElementFormBase</a>(parent)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = inductor->GetElectricalData();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Inductor::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_choiceReactivePower->SetSelection(0);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  m_choiceReactivePower->SetSelection(1);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_parent = parent;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_inductor = inductor;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> ReactiveShuntElementForm::~ReactiveShuntElementForm() {}</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keywordtype">void</span> ReactiveShuntElementForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keywordtype">void</span> ReactiveShuntElementForm::OnStabilityButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span>(m_capacitor) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_capacitor);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  swForm.SetTitle(_(<span class="stringliteral">"Capacitor: Switching"</span>));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  swForm.ShowModal();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_inductor) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_inductor);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  swForm.SetTitle(_(<span class="stringliteral">"Inductor: Switching"</span>));</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  swForm.ShowModal();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keywordtype">bool</span> ReactiveShuntElementForm::ValidateData()</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span>(m_capacitor) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span>(!m_capacitor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_capacitor->SetElectricalData(data);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_inductor) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span>(!m_inductor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  m_inductor->SetElectricalData(data);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> }</div><div class="ttc" id="_reactive_shunt_element_form_8h_html"><div class="ttname"><a href="_reactive_shunt_element_form_8h.html">ReactiveShuntElementForm.h</a></div></div> <div class="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdoc">Form to edit the switching data of power elements for electromechanical transient studies...</div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00032">SwitchingForm.h:32</a></div></div> <div class="ttc" id="struct_inductor_electrical_data_html"><div class="ttname"><a href="struct_inductor_electrical_data.html">InductorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00025">Inductor.h:25</a></div></div> <div class="ttc" id="class_reactive_shunt_element_form_base_html"><div class="ttname"><a href="class_reactive_shunt_element_form_base.html">ReactiveShuntElementFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00597">ElementForm.h:597</a></div></div> @@ -97,9 +97,11 @@ $(document).ready(function(){initNavTree('_reactive_shunt_element_form_8cpp_sour <div class="ttc" id="_switching_form_8h_html"><div class="ttname"><a href="_switching_form_8h.html">SwitchingForm.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00040">PowerElement.h:40</a></div></div> +<div class="ttc" id="_inductor_8h_html"><div class="ttname"><a href="_inductor_8h.html">Inductor.h</a></div></div> <div class="ttc" id="class_element_html_abb2e253ec1e86353cd7160209c96553c"><div class="ttname"><a href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a></div><div class="ttdeci">static wxString StringFromDouble(double value, int minDecimal=1)</div><div class="ttdoc">Convert a double value to string. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00320">Element.cpp:320</a></div></div> -<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00031">Capacitor.h:31</a></div></div> -<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00031">Inductor.h:31</a></div></div> +<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdoc">Shunt capactior power element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00038">Capacitor.h:38</a></div></div> +<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdoc">Inductor shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00038">Inductor.h:38</a></div></div> +<div class="ttc" id="_capacitor_8h_html"><div class="ttname"><a href="_capacitor_8h.html">Capacitor.h</a></div></div> <div class="ttc" id="struct_capacitor_electrical_data_html"><div class="ttname"><a href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00025">Capacitor.h:25</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_reactive_shunt_element_form_8h_source.html b/docs/doxygen/html/_reactive_shunt_element_form_8h_source.html index 484283a..90b36ac 100644 --- a/docs/doxygen/html/_reactive_shunt_element_form_8h_source.html +++ b/docs/doxygen/html/_reactive_shunt_element_form_8h_source.html @@ -90,8 +90,8 @@ $(document).ready(function(){initNavTree('_reactive_shunt_element_form_8h_source <div class="contents"> <a href="_reactive_shunt_element_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef REACTIVESHUNTELEMENTFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define REACTIVESHUNTELEMENTFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <wx/log.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_capacitor.html">Capacitor</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span><a class="code" href="class_inductor.html">Inductor</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">class </span><a class="code" href="class_switching_form.html">SwitchingForm</a>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_reactive_shunt_element_form.html"> 34</a></span> <span class="keyword">class </span><a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a> : <span class="keyword">public</span> <a class="code" href="class_reactive_shunt_element_form_base.html">ReactiveShuntElementFormBase</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>(wxWindow* parent, <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>(wxWindow* parent, <a class="code" href="class_inductor.html">Inductor</a>* inductor);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStabilityButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  wxWindow* m_parent;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* m_capacitor = NULL;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="class_inductor.html">Inductor</a>* m_inductor = NULL;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> };</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#endif // REACTIVESHUNTELEMENTFORM_H</span></div><div class="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdoc">Form to edit the switching data of power elements for electromechanical transient studies...</div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00032">SwitchingForm.h:32</a></div></div> <div class="ttc" id="class_reactive_shunt_element_form_base_html"><div class="ttname"><a href="class_reactive_shunt_element_form_base.html">ReactiveShuntElementFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00597">ElementForm.h:597</a></div></div> -<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00031">Capacitor.h:31</a></div></div> -<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00031">Inductor.h:31</a></div></div> +<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdoc">Shunt capactior power element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00038">Capacitor.h:38</a></div></div> +<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdoc">Inductor shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00038">Inductor.h:38</a></div></div> <div class="ttc" id="class_reactive_shunt_element_form_html"><div class="ttname"><a href="class_reactive_shunt_element_form.html">ReactiveShuntElementForm</a></div><div class="ttdoc">Form to edit the reactive shunt element power data. </div><div class="ttdef"><b>Definition:</b> <a href="_reactive_shunt_element_form_8h_source.html#l00034">ReactiveShuntElementForm.h:34</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_shunt_8cpp_source.html b/docs/doxygen/html/_shunt_8cpp_source.html index 5ac6c86..5823fd9 100644 --- a/docs/doxygen/html/_shunt_8cpp_source.html +++ b/docs/doxygen/html/_shunt_8cpp_source.html @@ -88,8 +88,9 @@ $(document).ready(function(){initNavTree('_shunt_8cpp_source.html','');}); <div class="title">Shunt.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "Shunt.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> Shunt::Shunt() : <a class="code" href="class_power_element.html">PowerElement</a>() {}</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Shunt::~Shunt() {}</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keywordtype">void</span> Shunt::UpdateSwitchesPosition()</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], m_pointList[2]);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_pointList[1] = m_pointList[0];</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  UpdateSwitches();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> }</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3"> 32</a></span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Shunt::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size(); i++) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</span>(!m_parentList[0]) {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd"> 45</a></span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd">Shunt::MoveNode</a>(<a class="code" href="class_element.html">Element</a>* element, wxPoint2DDouble position)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span>(element) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span>(element == m_parentList[0]) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Recalculate switches positions</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865"> 67</a></span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">Shunt::StartMove</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_moveStartPt = position;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_movePts = m_pointList;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_movePos = m_position;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b"> 74</a></span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">Shunt::RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="class_shunt.html#ae325a441a44c2a78c08289292fa00979"> 84</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_shunt.html#ae325a441a44c2a78c08289292fa00979">Shunt::NodeContains</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>(nodeRect.Contains(position)) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_activeNodeID = 1;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_shunt.html#aacb9fdd05533a8322596b130c70774ef"> 98</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_shunt.html#aacb9fdd05533a8322596b130c70774ef">Shunt::SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_parentList[0] = parent;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// Centralize the node on bus.</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_pointList[0] = parentPt;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="class_shunt.html#abe01dcdf8bc0ba6fc97d41673889fb8e"> 125</a></span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#abe01dcdf8bc0ba6fc97d41673889fb8e">Shunt::UpdateNodes</a>()</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span>(!m_parentList[0]->Intersects(nodeRect)) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="class_shunt.html#a7a732f1fb5f54b89e33957194fefd703"> 141</a></span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a7a732f1fb5f54b89e33957194fefd703">Shunt::RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  m_pointList[0] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], rotAngle);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keywordtype">void</span> Shunt::DrawGround(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="keyword"></span>{</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  std::vector<wxPoint2DDouble> groundPts;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  groundPts.push_back(position);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  groundPts.push_back(position + wxPoint2DDouble(0, 10));</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  groundPts.push_back(position + wxPoint2DDouble(-10, 10));</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  groundPts.push_back(position + wxPoint2DDouble(10, 10));</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  groundPts.push_back(position + wxPoint2DDouble(-6, 15));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  groundPts.push_back(position + wxPoint2DDouble(6, 15));</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  groundPts.push_back(position + wxPoint2DDouble(-3, 20));</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  groundPts.push_back(position + wxPoint2DDouble(3, 20));</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  DrawLine(groundPts, GL_LINES);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keywordtype">void</span> Shunt::UpdatePowerFlowArrowsPosition()</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  std::vector<wxPoint2DDouble> edges;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">switch</span>(m_pfDirection) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>: {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_powerFlowArrow.clear();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a>: {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  edges.push_back(m_pointList[2]);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  edges.push_back(m_pointList[1]);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>: {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  edges.push_back(m_pointList[1]);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  edges.push_back(m_pointList[2]);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  CalculatePowerFlowPts(edges);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_shunt_8h.html">Shunt.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> Shunt::Shunt() : <a class="code" href="class_power_element.html">PowerElement</a>() {}</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Shunt::~Shunt() {}</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keywordtype">void</span> Shunt::UpdateSwitchesPosition()</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], m_pointList[2]);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_pointList[1] = m_pointList[0];</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  UpdateSwitches();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> }</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3"> 32</a></span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Shunt::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size(); i++) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</span>(!m_parentList[0]) {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd"> 45</a></span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd">Shunt::MoveNode</a>(<a class="code" href="class_element.html">Element</a>* element, wxPoint2DDouble position)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span>(element) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span>(element == m_parentList[0]) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="comment">// Recalculate switches positions</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865"> 67</a></span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">Shunt::StartMove</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_moveStartPt = position;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_movePts = m_pointList;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  m_movePos = m_position;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b"> 74</a></span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">Shunt::RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="class_shunt.html#ae325a441a44c2a78c08289292fa00979"> 84</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_shunt.html#ae325a441a44c2a78c08289292fa00979">Shunt::NodeContains</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">if</span>(nodeRect.Contains(position)) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_activeNodeID = 1;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="class_shunt.html#aacb9fdd05533a8322596b130c70774ef"> 98</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_shunt.html#aacb9fdd05533a8322596b130c70774ef">Shunt::SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_parentList[0] = parent;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// Centralize the node on bus.</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_pointList[0] = parentPt;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="class_shunt.html#abe01dcdf8bc0ba6fc97d41673889fb8e"> 125</a></span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#abe01dcdf8bc0ba6fc97d41673889fb8e">Shunt::UpdateNodes</a>()</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span>(!m_parentList[0]->Intersects(nodeRect)) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="class_shunt.html#a7a732f1fb5f54b89e33957194fefd703"> 141</a></span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a7a732f1fb5f54b89e33957194fefd703">Shunt::RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  m_pointList[0] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], rotAngle);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="keywordtype">void</span> Shunt::DrawGround(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="keyword"></span>{</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  std::vector<wxPoint2DDouble> groundPts;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  groundPts.push_back(position);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  groundPts.push_back(position + wxPoint2DDouble(0, 10));</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  groundPts.push_back(position + wxPoint2DDouble(-10, 10));</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  groundPts.push_back(position + wxPoint2DDouble(10, 10));</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  groundPts.push_back(position + wxPoint2DDouble(-6, 15));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  groundPts.push_back(position + wxPoint2DDouble(6, 15));</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  groundPts.push_back(position + wxPoint2DDouble(-3, 20));</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  groundPts.push_back(position + wxPoint2DDouble(3, 20));</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  DrawLine(groundPts, GL_LINES);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keywordtype">void</span> Shunt::UpdatePowerFlowArrowsPosition()</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  std::vector<wxPoint2DDouble> edges;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">switch</span>(m_pfDirection) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>: {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_powerFlowArrow.clear();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a2c1d794112edc994905b320596aba869">PF_TO_BUS</a>: {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  edges.push_back(m_pointList[2]);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  edges.push_back(m_pointList[1]);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a5e06e77c5b3ee38885f0321cc0276b81">PF_TO_ELEMENT</a>: {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  edges.push_back(m_pointList[1]);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  edges.push_back(m_pointList[2]);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  CalculatePowerFlowPts(edges);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="_shunt_8h_html"><div class="ttname"><a href="_shunt_8h.html">Shunt.h</a></div></div> <div class="ttc" id="class_shunt_html_a23d2fed4e9b6a69bc4527b4345bd5bbd"><div class="ttname"><a href="class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd">Shunt::MoveNode</a></div><div class="ttdeci">virtual void MoveNode(Element *element, wxPoint2DDouble position)</div><div class="ttdoc">Move a node. StartMove(wxPoint2DDouble position) before start moving. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00045">Shunt.cpp:45</a></div></div> <div class="ttc" id="class_shunt_html_abe01dcdf8bc0ba6fc97d41673889fb8e"><div class="ttname"><a href="class_shunt.html#abe01dcdf8bc0ba6fc97d41673889fb8e">Shunt::UpdateNodes</a></div><div class="ttdeci">virtual void UpdateNodes()</div><div class="ttdoc">Update the nodes according to the parents. If a parent is removed, use this method. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00125">Shunt.cpp:125</a></div></div> <div class="ttc" id="class_shunt_html_a665d9a8c291d427e666567c6df34321b"><div class="ttname"><a href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">Shunt::RemoveParent</a></div><div class="ttdeci">virtual void RemoveParent(Element *parent)</div><div class="ttdoc">Remove a parent. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00074">Shunt.cpp:74</a></div></div> @@ -103,7 +104,7 @@ $(document).ready(function(){initNavTree('_shunt_8cpp_source.html','');}); <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00079">PowerElement.h:79</a></div></div> <div class="ttc" id="class_shunt_html_aacb9fdd05533a8322596b130c70774ef"><div class="ttname"><a href="class_shunt.html#aacb9fdd05533a8322596b130c70774ef">Shunt::SetNodeParent</a></div><div class="ttdeci">virtual bool SetNodeParent(Element *parent)</div><div class="ttdoc">Set a perent to the node. If all conditions are met, a new parent are added to the element and the po...</div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00098">Shunt.cpp:98</a></div></div> <div class="ttc" id="class_shunt_html_ae325a441a44c2a78c08289292fa00979"><div class="ttname"><a href="class_shunt.html#ae325a441a44c2a78c08289292fa00979">Shunt::NodeContains</a></div><div class="ttdeci">virtual bool NodeContains(wxPoint2DDouble position)</div><div class="ttdoc">Check if a node contains a point. If contains, set the attributes related to node movement...</div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00084">Shunt.cpp:84</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> <div class="ttc" id="class_element_html_a536ad18a847dcc979c984b3cb287f238"><div class="ttname"><a href="class_element.html#a536ad18a847dcc979c984b3cb287f238">Element::GetPosition</a></div><div class="ttdeci">wxPoint2DDouble GetPosition() const</div><div class="ttdoc">Get the element position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00187">Element.h:187</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_shunt_8h.html b/docs/doxygen/html/_shunt_8h.html new file mode 100644 index 0000000..6562b7d --- /dev/null +++ b/docs/doxygen/html/_shunt_8h.html @@ -0,0 +1,116 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/Shunt.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_shunt_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">Shunt.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_power_element_8h_source.html">PowerElement.h</a>"</code><br /> +<code>#include "<a class="el" href="_bus_8h_source.html">Bus.h</a>"</code><br /> +</div> +<p><a href="_shunt_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_shunt.html">Shunt</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Abstract class for shunt power elements. <a href="class_shunt.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_shunt_8h.html">Shunt.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_shunt_8h_source.html b/docs/doxygen/html/_shunt_8h_source.html index a047246..193f8f3 100644 --- a/docs/doxygen/html/_shunt_8h_source.html +++ b/docs/doxygen/html/_shunt_8h_source.html @@ -88,26 +88,27 @@ $(document).ready(function(){initNavTree('_shunt_8h_source.html','');}); <div class="title">Shunt.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SHUNT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SHUNT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="class_shunt.html"> 24</a></span> <span class="keyword">class </span><a class="code" href="class_shunt.html">Shunt</a> : <span class="keyword">public</span> <a class="code" href="class_power_element.html">PowerElement</a></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="class_shunt.html">Shunt</a>();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  ~<a class="code" href="class_shunt.html">Shunt</a>();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="class_shunt.html#a449431a2044b838d35cbb991aa1de658"> 30</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_shunt.html#a449431a2044b838d35cbb991aa1de658">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="class_shunt.html#afdbf0c51f9630589937298329bb041fe"> 31</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_shunt.html#afdbf0c51f9630589937298329bb041fe">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd">MoveNode</a>(<a class="code" href="class_element.html">Element</a>* element, wxPoint2DDouble position);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">StartMove</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a7a732f1fb5f54b89e33957194fefd703">RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_shunt.html#ae325a441a44c2a78c08289292fa00979">NodeContains</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_shunt.html#aacb9fdd05533a8322596b130c70774ef">SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#abe01dcdf8bc0ba6fc97d41673889fb8e">UpdateNodes</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">void</span> UpdateSwitchesPosition();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">void</span> UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">void</span> DrawGround(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">bool</span> m_inserted = <span class="keyword">false</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> };</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#endif // SHUNT_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_shunt_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SHUNT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SHUNT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_bus_8h.html">Bus.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="class_shunt.html"> 31</a></span> <span class="keyword">class </span><a class="code" href="class_shunt.html">Shunt</a> : <span class="keyword">public</span> <a class="code" href="class_power_element.html">PowerElement</a></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="class_shunt.html">Shunt</a>();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  ~<a class="code" href="class_shunt.html">Shunt</a>();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="class_shunt.html#a449431a2044b838d35cbb991aa1de658"> 37</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_shunt.html#a449431a2044b838d35cbb991aa1de658">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="class_shunt.html#afdbf0c51f9630589937298329bb041fe"> 38</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_shunt.html#afdbf0c51f9630589937298329bb041fe">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Move</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd">MoveNode</a>(<a class="code" href="class_element.html">Element</a>* element, wxPoint2DDouble position);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">StartMove</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a7a732f1fb5f54b89e33957194fefd703">RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">RemoveParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_shunt.html#ae325a441a44c2a78c08289292fa00979">NodeContains</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_shunt.html#aacb9fdd05533a8322596b130c70774ef">SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_shunt.html#abe01dcdf8bc0ba6fc97d41673889fb8e">UpdateNodes</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">void</span> UpdateSwitchesPosition();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">void</span> UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> DrawGround(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">bool</span> m_inserted = <span class="keyword">false</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> };</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#endif // SHUNT_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_shunt_html_a23d2fed4e9b6a69bc4527b4345bd5bbd"><div class="ttname"><a href="class_shunt.html#a23d2fed4e9b6a69bc4527b4345bd5bbd">Shunt::MoveNode</a></div><div class="ttdeci">virtual void MoveNode(Element *element, wxPoint2DDouble position)</div><div class="ttdoc">Move a node. StartMove(wxPoint2DDouble position) before start moving. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00045">Shunt.cpp:45</a></div></div> <div class="ttc" id="class_shunt_html_abe01dcdf8bc0ba6fc97d41673889fb8e"><div class="ttname"><a href="class_shunt.html#abe01dcdf8bc0ba6fc97d41673889fb8e">Shunt::UpdateNodes</a></div><div class="ttdeci">virtual void UpdateNodes()</div><div class="ttdoc">Update the nodes according to the parents. If a parent is removed, use this method. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00125">Shunt.cpp:125</a></div></div> <div class="ttc" id="class_shunt_html_a665d9a8c291d427e666567c6df34321b"><div class="ttname"><a href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">Shunt::RemoveParent</a></div><div class="ttdeci">virtual void RemoveParent(Element *parent)</div><div class="ttdoc">Remove a parent. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00074">Shunt.cpp:74</a></div></div> <div class="ttc" id="class_shunt_html_a7a732f1fb5f54b89e33957194fefd703"><div class="ttname"><a href="class_shunt.html#a7a732f1fb5f54b89e33957194fefd703">Shunt::RotateNode</a></div><div class="ttdeci">virtual void RotateNode(Element *parent, bool clockwise=true)</div><div class="ttdoc">Rotate a node. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00141">Shunt.cpp:141</a></div></div> +<div class="ttc" id="_bus_8h_html"><div class="ttname"><a href="_bus_8h.html">Bus.h</a></div></div> <div class="ttc" id="class_shunt_html_aa98b8a2f097fc02fee1ea874e19480f3"><div class="ttname"><a href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Shunt::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00032">Shunt.cpp:32</a></div></div> -<div class="ttc" id="class_shunt_html_a449431a2044b838d35cbb991aa1de658"><div class="ttname"><a href="class_shunt.html#a449431a2044b838d35cbb991aa1de658">Shunt::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00030">Shunt.h:30</a></div></div> -<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div><div class="ttdoc">Switching data of power elements. </div></div> +<div class="ttc" id="class_shunt_html_a449431a2044b838d35cbb991aa1de658"><div class="ttname"><a href="class_shunt.html#a449431a2044b838d35cbb991aa1de658">Shunt::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00037">Shunt.h:37</a></div></div> +<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div></div> <div class="ttc" id="class_shunt_html_a56d6136d647f64cf490dd9d7720f6865"><div class="ttname"><a href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">Shunt::StartMove</a></div><div class="ttdeci">virtual void StartMove(wxPoint2DDouble position)</div><div class="ttdoc">Update the element attributes related to the movement. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00067">Shunt.cpp:67</a></div></div> <div class="ttc" id="class_shunt_html_aacb9fdd05533a8322596b130c70774ef"><div class="ttname"><a href="class_shunt.html#aacb9fdd05533a8322596b130c70774ef">Shunt::SetNodeParent</a></div><div class="ttdeci">virtual bool SetNodeParent(Element *parent)</div><div class="ttdoc">Set a perent to the node. If all conditions are met, a new parent are added to the element and the po...</div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00098">Shunt.cpp:98</a></div></div> <div class="ttc" id="class_shunt_html_ae325a441a44c2a78c08289292fa00979"><div class="ttname"><a href="class_shunt.html#ae325a441a44c2a78c08289292fa00979">Shunt::NodeContains</a></div><div class="ttdeci">virtual bool NodeContains(wxPoint2DDouble position)</div><div class="ttdoc">Check if a node contains a point. If contains, set the attributes related to node movement...</div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8cpp_source.html#l00084">Shunt.cpp:84</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> -<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00024">Shunt.h:24</a></div></div> -<div class="ttc" id="class_shunt_html_afdbf0c51f9630589937298329bb041fe"><div class="ttname"><a href="class_shunt.html#afdbf0c51f9630589937298329bb041fe">Shunt::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00031">Shunt.h:31</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="class_shunt_html"><div class="ttname"><a href="class_shunt.html">Shunt</a></div><div class="ttdoc">Abstract class for shunt power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00031">Shunt.h:31</a></div></div> +<div class="ttc" id="class_shunt_html_afdbf0c51f9630589937298329bb041fe"><div class="ttname"><a href="class_shunt.html#afdbf0c51f9630589937298329bb041fe">Shunt::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_shunt_8h_source.html#l00038">Shunt.h:38</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>Shunt.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_shunt_8h.html">Shunt.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_simulations_settings_form_8cpp_source.html b/docs/doxygen/html/_simulations_settings_form_8cpp_source.html index a7199da..3050651 100644 --- a/docs/doxygen/html/_simulations_settings_form_8cpp_source.html +++ b/docs/doxygen/html/_simulations_settings_form_8cpp_source.html @@ -88,7 +88,8 @@ $(document).ready(function(){initNavTree('_simulations_settings_form_8cpp_source <div class="title">SimulationsSettingsForm.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_simulations_settings_form_8h.html">SimulationsSettingsForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "PropertiesData.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> SimulationsSettingsForm::SimulationsSettingsForm(wxWindow* parent, <a class="code" href="class_properties_data.html">PropertiesData</a>* properties)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  : <a class="code" href="class_simulations_settings_form_base.html">SimulationsSettingsFormBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_properties = properties;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keyword">auto</span> data = m_properties->GetSimulationPropertiesData();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_textCtrlbasePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a>(data.basePower));</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">switch</span>(data.basePowerUnit) {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_choiceBasePower->SetSelection(0);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_choiceBasePower->SetSelection(1);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_choiceBasePower->SetSelection(2);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_choiceBasePower->SetSelection(wxNOT_FOUND);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_checkBoxFaultAfterPF->SetValue(data.faultAfterPowerFlow);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_checkBoxSCPowerAfterPF->SetValue(data.scPowerAfterPowerFlow);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">switch</span>(data.powerFlowMethod) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">case</span> GAUSS_SEIDEL: {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_choicePFMethod->SetSelection(0);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">case</span> NEWTON_RAPHSON: {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_choicePFMethod->SetSelection(1);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_textCtrlAccFactor->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_choicePFMethod->SetSelection(wxNOT_FOUND);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_textCtrlAccFactor->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a>(data.accFator));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_textCtrlPFTolerance->SetValue(wxString::Format(<span class="stringliteral">"%g"</span>, data.powerFlowTolerance));</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_textCtrlPFMaxIterations->SetValue(wxString::Format(<span class="stringliteral">"%d"</span>, data.powerFlowMaxIterations));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_textCtrlTimeStep->SetValue(wxString::Format(<span class="stringliteral">"%g"</span>, data.timeStep));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_textCtrlSimTime->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a>(data.stabilitySimulationTime));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_textCtrlFreq->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a>(data.stabilityFrequency));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_textCtrlStabTolerance->SetValue(wxString::Format(<span class="stringliteral">"%g"</span>, data.stabilityTolerance));</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_textCtrlStabMaxIterations->SetValue(wxString::Format(<span class="stringliteral">"%d"</span>, data.stabilityMaxIterations));</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_textCtrlCtrlStepRatio->SetValue(wxString::Format(<span class="stringliteral">"%d"</span>, data.controlTimeStepRatio));</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_textCtrlPrintTime->SetValue(wxString::Format(<span class="stringliteral">"%g"</span>, data.plotTime));</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_checkBoxUseCOI->SetValue(data.useCOI);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> SimulationsSettingsForm::~SimulationsSettingsForm() {}</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keywordtype">void</span> SimulationsSettingsForm::OnButtonOKClick(wxCommandEvent& event)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keywordtype">bool</span> SimulationsSettingsForm::ValidateData()</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">auto</span> data = m_properties->GetSimulationPropertiesData();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlbasePower->GetValue(), data.basePower,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Base power\"."</span>)))</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">switch</span>(m_choiceBasePower->GetSelection()) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  data.basePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  data.basePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  data.basePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  data.faultAfterPowerFlow = m_checkBoxFaultAfterPF->GetValue();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  data.scPowerAfterPowerFlow = m_checkBoxSCPowerAfterPF->GetValue();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">switch</span>(m_choicePFMethod->GetSelection()) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  data.powerFlowMethod = GAUSS_SEIDEL;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  data.powerFlowMethod = NEWTON_RAPHSON;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlAccFactor->GetValue(), data.accFator,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Acceleration factor\"."</span>)))</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlPFTolerance->GetValue(), data.powerFlowTolerance,</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Tolerance (Power flow)\"."</span>)))</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#a4c93a9e20ed0ca0c376cf412b4347159">Element::IntFromString</a>(<span class="keyword">this</span>, m_textCtrlPFMaxIterations->GetValue(), data.powerFlowMaxIterations,</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Max. iterations (Power flow)\"."</span>)))</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlTimeStep->GetValue(), data.timeStep,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Time step\"."</span>)))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlSimTime->GetValue(), data.stabilitySimulationTime,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Simulation time\"."</span>)))</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlFreq->GetValue(), data.stabilityFrequency,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"System frequency\"."</span>)))</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlStabTolerance->GetValue(), data.stabilityTolerance,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Tolerance (Stability)\"."</span>)))</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#a4c93a9e20ed0ca0c376cf412b4347159">Element::IntFromString</a>(<span class="keyword">this</span>, m_textCtrlStabMaxIterations->GetValue(), data.stabilityMaxIterations,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Max. iterations (Stability)\"."</span>)))</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#a4c93a9e20ed0ca0c376cf412b4347159">Element::IntFromString</a>(<span class="keyword">this</span>, m_textCtrlCtrlStepRatio->GetValue(), data.controlTimeStepRatio,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Controls step ratio\"."</span>)))</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlPrintTime->GetValue(), data.plotTime,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Plot time\"."</span>)))</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  data.useCOI = m_checkBoxUseCOI->GetValue();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_properties->SetSimulationPropertiesData(data);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keywordtype">void</span> SimulationsSettingsForm::OnPFMethodChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(m_choicePFMethod->GetSelection() == 0)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_textCtrlAccFactor->Enable();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  m_textCtrlAccFactor->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00057">PropertiesData.h:57</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_simulations_settings_form_8h.html">SimulationsSettingsForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_properties_data_8h.html">PropertiesData.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> SimulationsSettingsForm::SimulationsSettingsForm(wxWindow* parent, <a class="code" href="class_properties_data.html">PropertiesData</a>* properties)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  : <a class="code" href="class_simulations_settings_form_base.html">SimulationsSettingsFormBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_properties = properties;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keyword">auto</span> data = m_properties->GetSimulationPropertiesData();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_textCtrlbasePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a>(data.basePower));</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">switch</span>(data.basePowerUnit) {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_choiceBasePower->SetSelection(0);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_choiceBasePower->SetSelection(1);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_choiceBasePower->SetSelection(2);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_choiceBasePower->SetSelection(wxNOT_FOUND);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_checkBoxFaultAfterPF->SetValue(data.faultAfterPowerFlow);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_checkBoxSCPowerAfterPF->SetValue(data.scPowerAfterPowerFlow);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">switch</span>(data.powerFlowMethod) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">case</span> GAUSS_SEIDEL: {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_choicePFMethod->SetSelection(0);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">case</span> NEWTON_RAPHSON: {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_choicePFMethod->SetSelection(1);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_textCtrlAccFactor->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  m_choicePFMethod->SetSelection(wxNOT_FOUND);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  m_textCtrlAccFactor->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a>(data.accFator));</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  m_textCtrlPFTolerance->SetValue(wxString::Format(<span class="stringliteral">"%g"</span>, data.powerFlowTolerance));</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_textCtrlPFMaxIterations->SetValue(wxString::Format(<span class="stringliteral">"%d"</span>, data.powerFlowMaxIterations));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_textCtrlTimeStep->SetValue(wxString::Format(<span class="stringliteral">"%g"</span>, data.timeStep));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  m_textCtrlSimTime->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a>(data.stabilitySimulationTime));</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_textCtrlFreq->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a>(data.stabilityFrequency));</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  m_textCtrlStabTolerance->SetValue(wxString::Format(<span class="stringliteral">"%g"</span>, data.stabilityTolerance));</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  m_textCtrlStabMaxIterations->SetValue(wxString::Format(<span class="stringliteral">"%d"</span>, data.stabilityMaxIterations));</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_textCtrlCtrlStepRatio->SetValue(wxString::Format(<span class="stringliteral">"%d"</span>, data.controlTimeStepRatio));</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  m_textCtrlPrintTime->SetValue(wxString::Format(<span class="stringliteral">"%g"</span>, data.plotTime));</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_checkBoxUseCOI->SetValue(data.useCOI);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> SimulationsSettingsForm::~SimulationsSettingsForm() {}</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keywordtype">void</span> SimulationsSettingsForm::OnButtonOKClick(wxCommandEvent& event)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keywordtype">bool</span> SimulationsSettingsForm::ValidateData()</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">auto</span> data = m_properties->GetSimulationPropertiesData();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlbasePower->GetValue(), data.basePower,</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Base power\"."</span>)))</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">switch</span>(m_choiceBasePower->GetSelection()) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  data.basePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  data.basePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  data.basePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  data.faultAfterPowerFlow = m_checkBoxFaultAfterPF->GetValue();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  data.scPowerAfterPowerFlow = m_checkBoxSCPowerAfterPF->GetValue();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">switch</span>(m_choicePFMethod->GetSelection()) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  data.powerFlowMethod = GAUSS_SEIDEL;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  data.powerFlowMethod = NEWTON_RAPHSON;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlAccFactor->GetValue(), data.accFator,</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Acceleration factor\"."</span>)))</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlPFTolerance->GetValue(), data.powerFlowTolerance,</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Tolerance (Power flow)\"."</span>)))</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#a4c93a9e20ed0ca0c376cf412b4347159">Element::IntFromString</a>(<span class="keyword">this</span>, m_textCtrlPFMaxIterations->GetValue(), data.powerFlowMaxIterations,</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Max. iterations (Power flow)\"."</span>)))</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlTimeStep->GetValue(), data.timeStep,</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Time step\"."</span>)))</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlSimTime->GetValue(), data.stabilitySimulationTime,</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Simulation time\"."</span>)))</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlFreq->GetValue(), data.stabilityFrequency,</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"System frequency\"."</span>)))</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlStabTolerance->GetValue(), data.stabilityTolerance,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Tolerance (Stability)\"."</span>)))</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#a4c93a9e20ed0ca0c376cf412b4347159">Element::IntFromString</a>(<span class="keyword">this</span>, m_textCtrlStabMaxIterations->GetValue(), data.stabilityMaxIterations,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Max. iterations (Stability)\"."</span>)))</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#a4c93a9e20ed0ca0c376cf412b4347159">Element::IntFromString</a>(<span class="keyword">this</span>, m_textCtrlCtrlStepRatio->GetValue(), data.controlTimeStepRatio,</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Controls step ratio\"."</span>)))</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>(!<a class="code" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a>(<span class="keyword">this</span>, m_textCtrlPrintTime->GetValue(), data.plotTime,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Plot time\"."</span>)))</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  data.useCOI = m_checkBoxUseCOI->GetValue();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_properties->SetSimulationPropertiesData(data);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keywordtype">void</span> SimulationsSettingsForm::OnPFMethodChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(m_choicePFMethod->GetSelection() == 0)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_textCtrlAccFactor->Enable();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  m_textCtrlAccFactor->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdoc">General and simulation data manager. </div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00064">PropertiesData.h:64</a></div></div> +<div class="ttc" id="_properties_data_8h_html"><div class="ttname"><a href="_properties_data_8h.html">PropertiesData.h</a></div></div> <div class="ttc" id="_simulations_settings_form_8h_html"><div class="ttname"><a href="_simulations_settings_form_8h.html">SimulationsSettingsForm.h</a></div></div> <div class="ttc" id="class_element_html_acfd2c0fe1af5a8ad6da393fb711fd69a"><div class="ttname"><a href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">Element::DoubleFromString</a></div><div class="ttdeci">static bool DoubleFromString(wxWindow *parent, wxString strValue, double &value, wxString errorMsg)</div><div class="ttdoc">Get a double value from a string. Show a error message if the conversion fail. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00292">Element.cpp:292</a></div></div> <div class="ttc" id="class_simulations_settings_form_base_html"><div class="ttname"><a href="class_simulations_settings_form_base.html">SimulationsSettingsFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_form_8h_source.html#l00078">PropertiesForm.h:78</a></div></div> diff --git a/docs/doxygen/html/_simulations_settings_form_8h_source.html b/docs/doxygen/html/_simulations_settings_form_8h_source.html index 2cf48f0..f10796a 100644 --- a/docs/doxygen/html/_simulations_settings_form_8h_source.html +++ b/docs/doxygen/html/_simulations_settings_form_8h_source.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('_simulations_settings_form_8h_source.h <div class="title">SimulationsSettingsForm.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_simulations_settings_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SIMULATIONSSETTINGSFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SIMULATIONSSETTINGSFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "PropertiesForm.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_simulations_settings_form.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_simulations_settings_form.html">SimulationsSettingsForm</a> : <span class="keyword">public</span> <a class="code" href="class_simulations_settings_form_base.html">SimulationsSettingsFormBase</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_simulations_settings_form.html">SimulationsSettingsForm</a>(wxWindow* parent, <a class="code" href="class_properties_data.html">PropertiesData</a>* properties);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_simulations_settings_form.html">SimulationsSettingsForm</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPFMethodChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonOKClick(wxCommandEvent& event);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>* m_properties;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#endif // SIMULATIONSSETTINGSFORM_H</span></div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00057">PropertiesData.h:57</a></div></div> +<a href="_simulations_settings_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SIMULATIONSSETTINGSFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SIMULATIONSSETTINGSFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "PropertiesForm.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_simulations_settings_form.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_simulations_settings_form.html">SimulationsSettingsForm</a> : <span class="keyword">public</span> <a class="code" href="class_simulations_settings_form_base.html">SimulationsSettingsFormBase</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_simulations_settings_form.html">SimulationsSettingsForm</a>(wxWindow* parent, <a class="code" href="class_properties_data.html">PropertiesData</a>* properties);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_simulations_settings_form.html">SimulationsSettingsForm</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPFMethodChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnButtonOKClick(wxCommandEvent& event);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>* m_properties;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#endif // SIMULATIONSSETTINGSFORM_H</span></div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdoc">General and simulation data manager. </div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00064">PropertiesData.h:64</a></div></div> <div class="ttc" id="class_simulations_settings_form_base_html"><div class="ttname"><a href="class_simulations_settings_form_base.html">SimulationsSettingsFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_form_8h_source.html#l00078">PropertiesForm.h:78</a></div></div> <div class="ttc" id="class_simulations_settings_form_html"><div class="ttname"><a href="class_simulations_settings_form.html">SimulationsSettingsForm</a></div><div class="ttdoc">Form to edit the simulation data. </div><div class="ttdef"><b>Definition:</b> <a href="_simulations_settings_form_8h_source.html#l00032">SimulationsSettingsForm.h:32</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_sum_8cpp_source.html b/docs/doxygen/html/_sum_8cpp_source.html index 46f2a05..953673a 100644 --- a/docs/doxygen/html/_sum_8cpp_source.html +++ b/docs/doxygen/html/_sum_8cpp_source.html @@ -88,15 +88,16 @@ $(document).ready(function(){initNavTree('_sum_8cpp_source.html','');}); <div class="title">Sum.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "Sum.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_sum_form_8h.html">SumForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_connection_line_8h.html">ConnectionLine.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> Sum::Sum(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_width = m_height = 36.0;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="class_node.html">Node</a>* nodeIn1 = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-m_width / 2, 9 - m_height / 2), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  nodeIn1->StartMove(m_position);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="class_node.html">Node</a>* nodeIn2 =</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-m_width / 2, 27 - m_height / 2), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  nodeIn2->StartMove(m_position);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="class_node.html">Node</a>* nodeOut = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(m_width / 2, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_nodeList.push_back(nodeIn1);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_nodeList.push_back(nodeIn2);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_signalList.push_back(SIGNAL_POSITIVE);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_signalList.push_back(SIGNAL_NEGATIVE);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  UpdatePoints();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> Sum::~Sum() {}</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_sum.html#a31dbb6867b17188b4a8cc650983da57b"> 43</a></span> <span class="keywordtype">void</span> <a class="code" href="class_sum.html#a31dbb6867b17188b4a8cc650983da57b">Sum::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword"></span>{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  glLineWidth(1.0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  DrawRectangle(m_position, m_width + borderSize, m_height + borderSize);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// Plot signals.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  glLineWidth(2.0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  wxPoint2DDouble signalOffset[4];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  wxPoint2DDouble sigmaOffset;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  signalOffset[0] = wxPoint2DDouble(6, 0);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  signalOffset[1] = wxPoint2DDouble(12, 0);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  signalOffset[2] = wxPoint2DDouble(9, -3);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  signalOffset[3] = wxPoint2DDouble(9, 3);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  sigmaOffset = wxPoint2DDouble(6, 0);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  signalOffset[0] = wxPoint2DDouble(-3, 9);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  signalOffset[1] = wxPoint2DDouble(3, 9);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  signalOffset[2] = wxPoint2DDouble(0, 6);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  signalOffset[3] = wxPoint2DDouble(0, 12);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  sigmaOffset = wxPoint2DDouble(0, 6);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  signalOffset[0] = wxPoint2DDouble(-6, 0);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  signalOffset[1] = wxPoint2DDouble(-12, 0);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  signalOffset[2] = wxPoint2DDouble(-9, -3);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  signalOffset[3] = wxPoint2DDouble(-9, 3);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  sigmaOffset = wxPoint2DDouble(-6, 0);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  signalOffset[0] = wxPoint2DDouble(-3, -9);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  signalOffset[1] = wxPoint2DDouble(3, -9);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  signalOffset[2] = wxPoint2DDouble(0, -6);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  signalOffset[3] = wxPoint2DDouble(0, -12);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  sigmaOffset = wxPoint2DDouble(0, -6);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_nodeList.size() - 1; ++i) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::vector<wxPoint2DDouble> hLine;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  hLine.push_back(m_nodeList[i]->GetPosition() + signalOffset[0]);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  hLine.push_back(m_nodeList[i]->GetPosition() + signalOffset[1]);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  DrawLine(hLine);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span>(m_signalList[i] == SIGNAL_POSITIVE) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  std::vector<wxPoint2DDouble> vLine;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  vLine.push_back(m_nodeList[i]->GetPosition() + signalOffset[2]);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  vLine.push_back(m_nodeList[i]->GetPosition() + signalOffset[3]);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  DrawLine(vLine);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// Plot sigma.</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  std::vector<wxPoint2DDouble> sigma;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  sigma.push_back(m_position + wxPoint2DDouble(4, 9) + sigmaOffset);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  sigma.push_back(m_position + wxPoint2DDouble(-6, 9) + sigmaOffset);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  sigma.push_back(m_position + wxPoint2DDouble(0, 0) + sigmaOffset);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  sigma.push_back(m_position + wxPoint2DDouble(-6, -9) + sigmaOffset);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  sigma.push_back(m_position + wxPoint2DDouble(4, -9) + sigmaOffset);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  glColor4d(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  DrawLine(sigma);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  DrawNodes();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="class_sum.html#a8c4bfb1dc965d8ac246de59d1f10888b"> 112</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_sum.html#a8c4bfb1dc965d8ac246de59d1f10888b">Sum::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="class_sum_form.html">SumForm</a>* sumForm = <span class="keyword">new</span> <a class="code" href="class_sum_form.html">SumForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(sumForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  sumForm->Destroy();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  sumForm->Destroy();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keywordtype">void</span> Sum::UpdatePoints()</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span>(m_angle == 0.0 || m_angle == 180.0) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_height = 18.0 * (m_nodeList.size() - 1);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_width = 36.0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_width = 18.0 * (m_nodeList.size() - 1);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_height = 42.0;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_nodeList.size() - 1; ++i) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span>(m_angle == 0.0)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_nodeList[i]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 9 + 18 * i - m_height / 2));</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_nodeList[i]->SetPosition(m_position + wxPoint2DDouble(m_width / 2 - 9 - 18 * i, -m_height / 2));</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_nodeList[i]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, m_height / 2 - 9 - 18 * i));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_nodeList[i]->SetPosition(m_position + wxPoint2DDouble(9 + 18 * i - m_width / 2, m_height / 2));</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>(m_angle == 0.0)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_nodeList[m_nodeList.size() - 1]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  m_nodeList[m_nodeList.size() - 1]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_nodeList[m_nodeList.size() - 1]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_nodeList[m_nodeList.size() - 1]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  SetPosition(m_position); <span class="comment">// Update rect.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="keywordtype">void</span> Sum::AddInNode()</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="class_node.html">Node</a>* newNode = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(wxPoint2DDouble(0, 0), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  newNode->SetAngle(m_angle);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_nodeList.insert(m_nodeList.end() - 1, newNode);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keywordtype">void</span> Sum::RemoveInNode()</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="class_node.html">Node</a>* nodeToRemove = *(m_nodeList.end() - 2);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">bool</span> foundChild = <span class="keyword">false</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_childList.begin(), itEnd = m_childList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="class_control_element.html">ControlElement</a>* child = <span class="keyword">static_cast<</span><a class="code" href="class_control_element.html">ControlElement</a>*<span class="keyword">></span>(*it);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">auto</span> childNodeList = child->GetNodeList();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = childNodeList.begin(), itEndN = childNodeList.end(); itN != itEndN; ++itN) {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span>(node == nodeToRemove) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  child-><a class="code" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">RemoveParent</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  RemoveChild(child);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  foundChild = <span class="keyword">true</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">if</span>(foundChild) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  m_nodeList.erase(m_nodeList.end() - 2);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="class_sum.html#a738bcb564fec2764055e4785227b5eea"> 183</a></span> <span class="keywordtype">void</span> <a class="code" href="class_sum.html#a738bcb564fec2764055e4785227b5eea">Sum::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  m_angle += 90.0;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  m_angle -= 90.0;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  m_angle = 0.0;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  m_angle = 270.0;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  UpdatePoints();</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keywordtype">bool</span> Sum::Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  std::vector<double> inputVector;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = m_nodeList.begin(), itNEnd = m_nodeList.end(); itN != itNEnd; ++itN) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">if</span>(node->GetNodeType() != Node::NODE_OUT) {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span>(!node->IsConnected()) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  inputVector.push_back(0.0);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = m_childList.begin(), itCEnd = m_childList.end(); itC != itCEnd; ++itC) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">auto</span> nodeList = cLine->GetNodeList();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itCN = nodeList.begin(), itCNEnd = nodeList.end(); itCN != itCNEnd; ++itCN) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="class_node.html">Node</a>* childNode = *itCN;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span>(childNode == node) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  inputVector.push_back(cLine->GetValue());</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span>(m_signalList.size() != inputVector.size()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_output = 0.0;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_signalList.size(); ++i) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">if</span>(m_signalList[i] == SIGNAL_POSITIVE)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  m_output += inputVector[i];</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_signalList[i] == SIGNAL_NEGATIVE)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  m_output -= inputVector[i];</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="class_sum.html#a0da96514e0462e47d3f57b79ddc457b6"> 238</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_sum.html#a0da96514e0462e47d3f57b79ddc457b6">Sum::GetCopy</a>()</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="class_sum.html">Sum</a>* copy = <span class="keyword">new</span> <a class="code" href="class_sum.html">Sum</a>(m_elementID);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> }</div><div class="ttc" id="class_sum_form_html"><div class="ttname"><a href="class_sum_form.html">SumForm</a></div><div class="ttdoc">Form to edit the sum control data. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_form_8h_source.html#l00032">SumForm.h:32</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_sum_8h.html">Sum.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_sum_form_8h.html">SumForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_connection_line_8h.html">ConnectionLine.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> Sum::Sum(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_width = m_height = 36.0;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="class_node.html">Node</a>* nodeIn1 = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-m_width / 2, 9 - m_height / 2), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  nodeIn1->StartMove(m_position);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <a class="code" href="class_node.html">Node</a>* nodeIn2 =</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-m_width / 2, 27 - m_height / 2), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  nodeIn2->StartMove(m_position);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="class_node.html">Node</a>* nodeOut = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(m_width / 2, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  nodeOut->SetAngle(180.0);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  nodeOut->StartMove(m_position);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_nodeList.push_back(nodeIn1);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_nodeList.push_back(nodeIn2);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_nodeList.push_back(nodeOut);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_signalList.push_back(SIGNAL_POSITIVE);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_signalList.push_back(SIGNAL_NEGATIVE);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  UpdatePoints();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> Sum::~Sum() {}</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_sum.html#a31dbb6867b17188b4a8cc650983da57b"> 43</a></span> <span class="keywordtype">void</span> <a class="code" href="class_sum.html#a31dbb6867b17188b4a8cc650983da57b">Sum::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword"></span>{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  glLineWidth(1.0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  DrawRectangle(m_position, m_width + borderSize, m_height + borderSize);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// Plot signals.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  glLineWidth(2.0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  wxPoint2DDouble signalOffset[4];</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  wxPoint2DDouble sigmaOffset;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  signalOffset[0] = wxPoint2DDouble(6, 0);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  signalOffset[1] = wxPoint2DDouble(12, 0);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  signalOffset[2] = wxPoint2DDouble(9, -3);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  signalOffset[3] = wxPoint2DDouble(9, 3);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  sigmaOffset = wxPoint2DDouble(6, 0);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  signalOffset[0] = wxPoint2DDouble(-3, 9);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  signalOffset[1] = wxPoint2DDouble(3, 9);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  signalOffset[2] = wxPoint2DDouble(0, 6);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  signalOffset[3] = wxPoint2DDouble(0, 12);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  sigmaOffset = wxPoint2DDouble(0, 6);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  signalOffset[0] = wxPoint2DDouble(-6, 0);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  signalOffset[1] = wxPoint2DDouble(-12, 0);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  signalOffset[2] = wxPoint2DDouble(-9, -3);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  signalOffset[3] = wxPoint2DDouble(-9, 3);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  sigmaOffset = wxPoint2DDouble(-6, 0);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  signalOffset[0] = wxPoint2DDouble(-3, -9);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  signalOffset[1] = wxPoint2DDouble(3, -9);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  signalOffset[2] = wxPoint2DDouble(0, -6);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  signalOffset[3] = wxPoint2DDouble(0, -12);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  sigmaOffset = wxPoint2DDouble(0, -6);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_nodeList.size() - 1; ++i) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::vector<wxPoint2DDouble> hLine;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  hLine.push_back(m_nodeList[i]->GetPosition() + signalOffset[0]);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  hLine.push_back(m_nodeList[i]->GetPosition() + signalOffset[1]);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  DrawLine(hLine);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">if</span>(m_signalList[i] == SIGNAL_POSITIVE) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  std::vector<wxPoint2DDouble> vLine;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  vLine.push_back(m_nodeList[i]->GetPosition() + signalOffset[2]);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  vLine.push_back(m_nodeList[i]->GetPosition() + signalOffset[3]);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  DrawLine(vLine);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// Plot sigma.</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  std::vector<wxPoint2DDouble> sigma;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  sigma.push_back(m_position + wxPoint2DDouble(4, 9) + sigmaOffset);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  sigma.push_back(m_position + wxPoint2DDouble(-6, 9) + sigmaOffset);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  sigma.push_back(m_position + wxPoint2DDouble(0, 0) + sigmaOffset);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  sigma.push_back(m_position + wxPoint2DDouble(-6, -9) + sigmaOffset);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  sigma.push_back(m_position + wxPoint2DDouble(4, -9) + sigmaOffset);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  glColor4d(0.0, 0.3, 1.0, 1.0);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  DrawLine(sigma);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  DrawNodes();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="class_sum.html#a8c4bfb1dc965d8ac246de59d1f10888b"> 112</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_sum.html#a8c4bfb1dc965d8ac246de59d1f10888b">Sum::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="class_sum_form.html">SumForm</a>* sumForm = <span class="keyword">new</span> <a class="code" href="class_sum_form.html">SumForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(sumForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  sumForm->Destroy();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  sumForm->Destroy();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keywordtype">void</span> Sum::UpdatePoints()</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span>(m_angle == 0.0 || m_angle == 180.0) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_height = 18.0 * (m_nodeList.size() - 1);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_width = 36.0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_width = 18.0 * (m_nodeList.size() - 1);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_height = 42.0;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_nodeList.size() - 1; ++i) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span>(m_angle == 0.0)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_nodeList[i]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 9 + 18 * i - m_height / 2));</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_nodeList[i]->SetPosition(m_position + wxPoint2DDouble(m_width / 2 - 9 - 18 * i, -m_height / 2));</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_nodeList[i]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, m_height / 2 - 9 - 18 * i));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_nodeList[i]->SetPosition(m_position + wxPoint2DDouble(9 + 18 * i - m_width / 2, m_height / 2));</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>(m_angle == 0.0)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  m_nodeList[m_nodeList.size() - 1]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  m_nodeList[m_nodeList.size() - 1]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0)</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_nodeList[m_nodeList.size() - 1]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_nodeList[m_nodeList.size() - 1]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  SetPosition(m_position); <span class="comment">// Update rect.</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="keywordtype">void</span> Sum::AddInNode()</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="class_node.html">Node</a>* newNode = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(wxPoint2DDouble(0, 0), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  newNode->SetAngle(m_angle);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_nodeList.insert(m_nodeList.end() - 1, newNode);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="keywordtype">void</span> Sum::RemoveInNode()</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="class_node.html">Node</a>* nodeToRemove = *(m_nodeList.end() - 2);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">bool</span> foundChild = <span class="keyword">false</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_childList.begin(), itEnd = m_childList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="class_control_element.html">ControlElement</a>* child = <span class="keyword">static_cast<</span><a class="code" href="class_control_element.html">ControlElement</a>*<span class="keyword">></span>(*it);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keyword">auto</span> childNodeList = child->GetNodeList();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = childNodeList.begin(), itEndN = childNodeList.end(); itN != itEndN; ++itN) {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span>(node == nodeToRemove) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  child-><a class="code" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">RemoveParent</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  RemoveChild(child);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  foundChild = <span class="keyword">true</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">if</span>(foundChild) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  m_nodeList.erase(m_nodeList.end() - 2);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="class_sum.html#a738bcb564fec2764055e4785227b5eea"> 183</a></span> <span class="keywordtype">void</span> <a class="code" href="class_sum.html#a738bcb564fec2764055e4785227b5eea">Sum::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  m_angle += 90.0;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  m_angle -= 90.0;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  m_angle = 0.0;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  m_angle = 270.0;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  UpdatePoints();</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> }</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="keywordtype">bool</span> Sum::Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  std::vector<double> inputVector;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itN = m_nodeList.begin(), itNEnd = m_nodeList.end(); itN != itNEnd; ++itN) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="class_node.html">Node</a>* node = *itN;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">if</span>(node->GetNodeType() != Node::NODE_OUT) {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span>(!node->IsConnected()) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  inputVector.push_back(0.0);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itC = m_childList.begin(), itCEnd = m_childList.end(); itC != itCEnd; ++itC) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="class_connection_line.html">ConnectionLine</a>* cLine = <span class="keyword">static_cast<</span><a class="code" href="class_connection_line.html">ConnectionLine</a>*<span class="keyword">></span>(*itC);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">auto</span> nodeList = cLine->GetNodeList();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itCN = nodeList.begin(), itCNEnd = nodeList.end(); itCN != itCNEnd; ++itCN) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="class_node.html">Node</a>* childNode = *itCN;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span>(childNode == node) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  inputVector.push_back(cLine->GetValue());</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span>(m_signalList.size() != inputVector.size()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_output = 0.0;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_signalList.size(); ++i) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">if</span>(m_signalList[i] == SIGNAL_POSITIVE)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  m_output += inputVector[i];</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_signalList[i] == SIGNAL_NEGATIVE)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  m_output -= inputVector[i];</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="class_sum.html#a0da96514e0462e47d3f57b79ddc457b6"> 238</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_sum.html#a0da96514e0462e47d3f57b79ddc457b6">Sum::GetCopy</a>()</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="class_sum.html">Sum</a>* copy = <span class="keyword">new</span> <a class="code" href="class_sum.html">Sum</a>(m_elementID);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> }</div><div class="ttc" id="class_sum_form_html"><div class="ttname"><a href="class_sum_form.html">SumForm</a></div><div class="ttdoc">Form to edit the sum control data. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_form_8h_source.html#l00032">SumForm.h:32</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_sum_html_a8c4bfb1dc965d8ac246de59d1f10888b"><div class="ttname"><a href="class_sum.html#a8c4bfb1dc965d8ac246de59d1f10888b">Sum::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8cpp_source.html#l00112">Sum.cpp:112</a></div></div> -<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00026">Sum.h:26</a></div></div> +<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdoc">Sum the all inputs (can choose the input signal). </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00033">Sum.h:33</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> <div class="ttc" id="class_sum_html_a738bcb564fec2764055e4785227b5eea"><div class="ttname"><a href="class_sum.html#a738bcb564fec2764055e4785227b5eea">Sum::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8cpp_source.html#l00183">Sum.cpp:183</a></div></div> <div class="ttc" id="_connection_line_8h_html"><div class="ttname"><a href="_connection_line_8h.html">ConnectionLine.h</a></div></div> <div class="ttc" id="_sum_form_8h_html"><div class="ttname"><a href="_sum_form_8h.html">SumForm.h</a></div></div> <div class="ttc" id="class_sum_html_a0da96514e0462e47d3f57b79ddc457b6"><div class="ttname"><a href="class_sum.html#a0da96514e0462e47d3f57b79ddc457b6">Sum::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8cpp_source.html#l00238">Sum.cpp:238</a></div></div> +<div class="ttc" id="_sum_8h_html"><div class="ttname"><a href="_sum_8h.html">Sum.h</a></div></div> <div class="ttc" id="class_connection_line_html"><div class="ttname"><a href="class_connection_line.html">ConnectionLine</a></div><div class="ttdoc">Connection between two control elements or other connection line and an element. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00030">ConnectionLine.h:30</a></div></div> <div class="ttc" id="class_element_html_a9504437b60faf2c5a27584de8a24810c"><div class="ttname"><a href="class_element.html#a9504437b60faf2c5a27584de8a24810c">Element::RemoveParent</a></div><div class="ttdeci">virtual void RemoveParent(Element *parent)</div><div class="ttdoc">Remove a parent. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00359">Element.h:359</a></div></div> <div class="ttc" id="class_sum_html_a31dbb6867b17188b4a8cc650983da57b"><div class="ttname"><a href="class_sum.html#a31dbb6867b17188b4a8cc650983da57b">Sum::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8cpp_source.html#l00043">Sum.cpp:43</a></div></div> diff --git a/docs/doxygen/html/_sum_8h.html b/docs/doxygen/html/_sum_8h.html new file mode 100644 index 0000000..5747052 --- /dev/null +++ b/docs/doxygen/html/_sum_8h.html @@ -0,0 +1,115 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/Sum.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_sum_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">Sum.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_control_element_8h_source.html">ControlElement.h</a>"</code><br /> +</div> +<p><a href="_sum_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sum.html">Sum</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="class_sum.html" title="Sum the all inputs (can choose the input signal). ">Sum</a> the all inputs (can choose the input signal). <a href="class_sum.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_sum_8h.html">Sum.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_sum_8h_source.html b/docs/doxygen/html/_sum_8h_source.html index bb4d08e..7bcc3be 100644 --- a/docs/doxygen/html/_sum_8h_source.html +++ b/docs/doxygen/html/_sum_8h_source.html @@ -88,15 +88,15 @@ $(document).ready(function(){initNavTree('_sum_8h_source.html','');}); <div class="title">Sum.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SUM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SUM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_sum_form.html">SumForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span><a class="code" href="class_connection_line.html">ConnectionLine</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="class_sum.html"> 26</a></span> <span class="keyword">class </span><a class="code" href="class_sum.html">Sum</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">enum</span> Signal { SIGNAL_POSITIVE = 0, SIGNAL_NEGATIVE };</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="class_sum.html">Sum</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  ~<a class="code" href="class_sum.html">Sum</a>();</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_sum.html#a31dbb6867b17188b4a8cc650983da57b">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_sum.html#a1d1b52ca1b9a81d53c0a9cf140546987"> 34</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_sum.html#a1d1b52ca1b9a81d53c0a9cf140546987">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_sum.html#ac8ed3db993dd3053b94ccac7da4a664e"> 35</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_sum.html#ac8ed3db993dd3053b94ccac7da4a664e">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_sum.html#a8c4bfb1dc965d8ac246de59d1f10888b">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_sum.html#a738bcb564fec2764055e4785227b5eea">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> std::vector<Signal> GetSignalList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_signalList; }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetSignalList(std::vector<Signal> signalList) { m_signalList = signalList; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">void</span> AddInNode();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">void</span> RemoveInNode();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_sum.html#a0da96514e0462e47d3f57b79ddc457b6">GetCopy</a>();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::vector<Signal> m_signalList;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> };</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#endif // SUM_H</span></div><div class="ttc" id="class_sum_form_html"><div class="ttname"><a href="class_sum_form.html">SumForm</a></div><div class="ttdoc">Form to edit the sum control data. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_form_8h_source.html#l00032">SumForm.h:32</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_sum_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SUM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SUM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_sum_form.html">SumForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span><a class="code" href="class_connection_line.html">ConnectionLine</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_sum.html"> 33</a></span> <span class="keyword">class </span><a class="code" href="class_sum.html">Sum</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">enum</span> Signal { SIGNAL_POSITIVE = 0, SIGNAL_NEGATIVE };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="class_sum.html">Sum</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  ~<a class="code" href="class_sum.html">Sum</a>();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_sum.html#a31dbb6867b17188b4a8cc650983da57b">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="class_sum.html#a1d1b52ca1b9a81d53c0a9cf140546987"> 41</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_sum.html#a1d1b52ca1b9a81d53c0a9cf140546987">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_sum.html#ac8ed3db993dd3053b94ccac7da4a664e"> 42</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_sum.html#ac8ed3db993dd3053b94ccac7da4a664e">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_sum.html#a8c4bfb1dc965d8ac246de59d1f10888b">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_sum.html#a738bcb564fec2764055e4785227b5eea">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> std::vector<Signal> GetSignalList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_signalList; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetSignalList(std::vector<Signal> signalList) { m_signalList = signalList; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdatePoints();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">void</span> AddInNode();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">void</span> RemoveInNode();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_sum.html#a0da96514e0462e47d3f57b79ddc457b6">GetCopy</a>();</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  std::vector<Signal> m_signalList;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> };</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#endif // SUM_H</span></div><div class="ttc" id="class_sum_form_html"><div class="ttname"><a href="class_sum_form.html">SumForm</a></div><div class="ttdoc">Form to edit the sum control data. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_form_8h_source.html#l00032">SumForm.h:32</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_sum_html_a8c4bfb1dc965d8ac246de59d1f10888b"><div class="ttname"><a href="class_sum.html#a8c4bfb1dc965d8ac246de59d1f10888b">Sum::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8cpp_source.html#l00112">Sum.cpp:112</a></div></div> -<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00026">Sum.h:26</a></div></div> +<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdoc">Sum the all inputs (can choose the input signal). </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00033">Sum.h:33</a></div></div> <div class="ttc" id="class_sum_html_a738bcb564fec2764055e4785227b5eea"><div class="ttname"><a href="class_sum.html#a738bcb564fec2764055e4785227b5eea">Sum::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8cpp_source.html#l00183">Sum.cpp:183</a></div></div> -<div class="ttc" id="class_sum_html_a1d1b52ca1b9a81d53c0a9cf140546987"><div class="ttname"><a href="class_sum.html#a1d1b52ca1b9a81d53c0a9cf140546987">Sum::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00034">Sum.h:34</a></div></div> +<div class="ttc" id="class_sum_html_a1d1b52ca1b9a81d53c0a9cf140546987"><div class="ttname"><a href="class_sum.html#a1d1b52ca1b9a81d53c0a9cf140546987">Sum::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00041">Sum.h:41</a></div></div> <div class="ttc" id="class_sum_html_a0da96514e0462e47d3f57b79ddc457b6"><div class="ttname"><a href="class_sum.html#a0da96514e0462e47d3f57b79ddc457b6">Sum::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8cpp_source.html#l00238">Sum.cpp:238</a></div></div> <div class="ttc" id="class_connection_line_html"><div class="ttname"><a href="class_connection_line.html">ConnectionLine</a></div><div class="ttdoc">Connection between two control elements or other connection line and an element. </div><div class="ttdef"><b>Definition:</b> <a href="_connection_line_8h_source.html#l00030">ConnectionLine.h:30</a></div></div> -<div class="ttc" id="class_sum_html_ac8ed3db993dd3053b94ccac7da4a664e"><div class="ttname"><a href="class_sum.html#ac8ed3db993dd3053b94ccac7da4a664e">Sum::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00035">Sum.h:35</a></div></div> +<div class="ttc" id="class_sum_html_ac8ed3db993dd3053b94ccac7da4a664e"><div class="ttname"><a href="class_sum.html#ac8ed3db993dd3053b94ccac7da4a664e">Sum::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00042">Sum.h:42</a></div></div> <div class="ttc" id="_control_element_8h_html"><div class="ttname"><a href="_control_element_8h.html">ControlElement.h</a></div><div class="ttdoc">Base class of a control element. Provide general methods to other control classes. </div></div> <div class="ttc" id="class_sum_html_a31dbb6867b17188b4a8cc650983da57b"><div class="ttname"><a href="class_sum.html#a31dbb6867b17188b4a8cc650983da57b">Sum::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8cpp_source.html#l00043">Sum.cpp:43</a></div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> @@ -105,7 +105,7 @@ $(document).ready(function(){initNavTree('_sum_8h_source.html','');}); <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>Sum.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_sum_8h.html">Sum.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_sum_form_8cpp_source.html b/docs/doxygen/html/_sum_form_8cpp_source.html index 9eb2483..82c6d7b 100644 --- a/docs/doxygen/html/_sum_form_8cpp_source.html +++ b/docs/doxygen/html/_sum_form_8cpp_source.html @@ -88,8 +88,9 @@ $(document).ready(function(){initNavTree('_sum_form_8cpp_source.html','');}); <div class="title">SumForm.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_sum_form_8h.html">SumForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "Sum.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> SumForm::SumForm(wxWindow* parent, <a class="code" href="class_sum.html">Sum</a>* sum) : <a class="code" href="class_sum_form_base.html">SumFormBase</a>(parent)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_parent = parent;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_sum = sum;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  wxString signalStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">auto</span> signalList = m_sum->GetSignalList();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = signalList.begin(), itEnd = signalList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  Sum::Signal signal = *it;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">switch</span>(signal) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">case</span> Sum::SIGNAL_POSITIVE: {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  signalStr += <span class="stringliteral">"+"</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">case</span> Sum::SIGNAL_NEGATIVE: {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  signalStr += <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">if</span>(it != itEnd - 1) signalStr += <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_textCtrlSigns->SetValue(signalStr);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> SumForm::~SumForm() {}</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keywordtype">void</span> SumForm::OnOKClick(wxCommandEvent& event)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keywordtype">bool</span> SumForm::ValidateData()</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxString signalStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_textCtrlSigns->GetValue().length(); ++i) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">if</span>(m_textCtrlSigns->GetValue()[i] != <span class="charliteral">' '</span>) signalStr += m_textCtrlSigns->GetValue()[i];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span>(signalStr.size() < 2) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  wxMessageDialog msg(<span class="keyword">this</span>, _(<span class="stringliteral">"You must assign at least two signals."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  msg.ShowModal();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  std::vector<Sum::Signal> signalList;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)signalStr.length(); ++i) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">switch</span>(signalStr[i].GetValue()) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">case</span> <span class="charliteral">'+'</span>: {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  signalList.push_back(Sum::SIGNAL_POSITIVE);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">case</span> <span class="charliteral">'-'</span>: {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  signalList.push_back(Sum::SIGNAL_NEGATIVE);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  wxMessageDialog msg(<span class="keyword">this</span>, _(<span class="stringliteral">"Value entered incorrectly in the field \"Signs\"."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  msg.ShowModal();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">int</span> diff = (int)signalList.size() - (int)m_sum->GetSignalList().size();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span>(diff < 0) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  diff = std::abs(diff);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < diff; ++i) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_sum->RemoveInNode();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(diff > 0) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < diff; ++i) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_sum->AddInNode();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_sum->SetSignalList(signalList);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_sum->UpdatePoints();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> }</div><div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00026">Sum.h:26</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_sum_form_8h.html">SumForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_sum_8h.html">Sum.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> SumForm::SumForm(wxWindow* parent, <a class="code" href="class_sum.html">Sum</a>* sum) : <a class="code" href="class_sum_form_base.html">SumFormBase</a>(parent)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_parent = parent;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_sum = sum;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  wxString signalStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">auto</span> signalList = m_sum->GetSignalList();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = signalList.begin(), itEnd = signalList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  Sum::Signal signal = *it;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">switch</span>(signal) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">case</span> Sum::SIGNAL_POSITIVE: {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  signalStr += <span class="stringliteral">"+"</span>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">case</span> Sum::SIGNAL_NEGATIVE: {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  signalStr += <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">if</span>(it != itEnd - 1) signalStr += <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_textCtrlSigns->SetValue(signalStr);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> SumForm::~SumForm() {}</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="keywordtype">void</span> SumForm::OnOKClick(wxCommandEvent& event)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keywordtype">bool</span> SumForm::ValidateData()</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxString signalStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_textCtrlSigns->GetValue().length(); ++i) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">if</span>(m_textCtrlSigns->GetValue()[i] != <span class="charliteral">' '</span>) signalStr += m_textCtrlSigns->GetValue()[i];</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span>(signalStr.size() < 2) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  wxMessageDialog msg(<span class="keyword">this</span>, _(<span class="stringliteral">"You must assign at least two signals."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  msg.ShowModal();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  std::vector<Sum::Signal> signalList;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)signalStr.length(); ++i) {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">switch</span>(signalStr[i].GetValue()) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">case</span> <span class="charliteral">'+'</span>: {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  signalList.push_back(Sum::SIGNAL_POSITIVE);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">case</span> <span class="charliteral">'-'</span>: {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  signalList.push_back(Sum::SIGNAL_NEGATIVE);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  wxMessageDialog msg(<span class="keyword">this</span>, _(<span class="stringliteral">"Value entered incorrectly in the field \"Signs\"."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  msg.ShowModal();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">int</span> diff = (int)signalList.size() - (int)m_sum->GetSignalList().size();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span>(diff < 0) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  diff = std::abs(diff);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < diff; ++i) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  m_sum->RemoveInNode();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(diff > 0) {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < diff; ++i) {</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_sum->AddInNode();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_sum->SetSignalList(signalList);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_sum->UpdatePoints();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> }</div><div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdoc">Sum the all inputs (can choose the input signal). </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00033">Sum.h:33</a></div></div> <div class="ttc" id="_sum_form_8h_html"><div class="ttname"><a href="_sum_form_8h.html">SumForm.h</a></div></div> +<div class="ttc" id="_sum_8h_html"><div class="ttname"><a href="_sum_8h.html">Sum.h</a></div></div> <div class="ttc" id="class_sum_form_base_html"><div class="ttname"><a href="class_sum_form_base.html">SumFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00805">ElementForm.h:805</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_sum_form_8h_source.html b/docs/doxygen/html/_sum_form_8h_source.html index 6e71e39..d5fa8d7 100644 --- a/docs/doxygen/html/_sum_form_8h_source.html +++ b/docs/doxygen/html/_sum_form_8h_source.html @@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('_sum_form_8h_source.html','');}); </div><!--header--> <div class="contents"> <a href="_sum_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SUMFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SUMFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_sum.html">Sum</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_sum_form.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_sum_form.html">SumForm</a> : <span class="keyword">public</span> <a class="code" href="class_sum_form_base.html">SumFormBase</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_sum_form.html">SumForm</a>(wxWindow* parent, <a class="code" href="class_sum.html">Sum</a>* sum);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_sum_form.html">SumForm</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKClick(wxCommandEvent& event);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_sum.html">Sum</a>* m_sum = NULL;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> };</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#endif // SUMFORM_H</span></div><div class="ttc" id="class_sum_form_html"><div class="ttname"><a href="class_sum_form.html">SumForm</a></div><div class="ttdoc">Form to edit the sum control data. </div><div class="ttdef"><b>Definition:</b> <a href="_sum_form_8h_source.html#l00032">SumForm.h:32</a></div></div> -<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00026">Sum.h:26</a></div></div> +<div class="ttc" id="class_sum_html"><div class="ttname"><a href="class_sum.html">Sum</a></div><div class="ttdoc">Sum the all inputs (can choose the input signal). </div><div class="ttdef"><b>Definition:</b> <a href="_sum_8h_source.html#l00033">Sum.h:33</a></div></div> <div class="ttc" id="class_sum_form_base_html"><div class="ttname"><a href="class_sum_form_base.html">SumFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00805">ElementForm.h:805</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_switching_form_8cpp_source.html b/docs/doxygen/html/_switching_form_8cpp_source.html index 476a801..0c4cba4 100644 --- a/docs/doxygen/html/_switching_form_8cpp_source.html +++ b/docs/doxygen/html/_switching_form_8cpp_source.html @@ -92,11 +92,11 @@ $(document).ready(function(){initNavTree('_switching_form_8cpp_source.html',''); <div class="ttc" id="struct_switching_data_html_af78fb958137a0532ea2a584810708574"><div class="ttname"><a href="struct_switching_data.html#af78fb958137a0532ea2a584810708574">SwitchingData::swType</a></div><div class="ttdeci">std::vector< SwitchingType > swType</div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00094">PowerElement.h:94</a></div></div> <div class="ttc" id="_power_element_8h_html_ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776"><div class="ttname"><a href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1baa0c70909536e1b1a2f638e13a7f7b776">SW_REMOVE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00071">PowerElement.h:71</a></div></div> <div class="ttc" id="class_switching_form_base_html"><div class="ttname"><a href="class_switching_form_base.html">SwitchingFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00632">ElementForm.h:632</a></div></div> -<div class="ttc" id="struct_switching_data_html"><div class="ttname"><a href="struct_switching_data.html">SwitchingData</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00093">PowerElement.h:93</a></div></div> +<div class="ttc" id="struct_switching_data_html"><div class="ttname"><a href="struct_switching_data.html">SwitchingData</a></div><div class="ttdoc">Switching data of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00093">PowerElement.h:93</a></div></div> <div class="ttc" id="_switching_form_8h_html"><div class="ttname"><a href="_switching_form_8h.html">SwitchingForm.h</a></div></div> -<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div><div class="ttdoc">Switching data of power elements. </div></div> +<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div></div> <div class="ttc" id="class_power_element_html_ab78269f9b66fbf90ae09050083e9dbe1"><div class="ttname"><a href="class_power_element.html#ab78269f9b66fbf90ae09050083e9dbe1">PowerElement::GetSwitchingData</a></div><div class="ttdeci">virtual SwitchingData GetSwitchingData()</div><div class="ttdoc">Returns the switching data of the element. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00182">PowerElement.h:182</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> <div class="ttc" id="_power_element_8h_html_ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7"><div class="ttname"><a href="_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7">SW_INSERT</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00070">PowerElement.h:70</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_switching_form_8h_source.html b/docs/doxygen/html/_switching_form_8h_source.html index 51cbf31..42c55b4 100644 --- a/docs/doxygen/html/_switching_form_8h_source.html +++ b/docs/doxygen/html/_switching_form_8h_source.html @@ -90,7 +90,7 @@ $(document).ready(function(){initNavTree('_switching_form_8h_source.html','');}) <div class="contents"> <a href="_switching_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SWITCHINGFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SWITCHINGFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_power_element.html">PowerElement</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_switching_form.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_switching_form.html">SwitchingForm</a> : <span class="keyword">public</span> <a class="code" href="class_switching_form_base.html">SwitchingFormBase</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a>(wxWindow* parent);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a>(wxWindow* parent, <a class="code" href="class_power_element.html">PowerElement</a>* element);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_switching_form.html">SwitchingForm</a>();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnDownButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnUpButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnChangeProperties(wxPropertyGridEvent& event);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnSelectItem(wxListEvent& event);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnInsertButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRemoveButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">int</span> m_maxID = 0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_power_element.html">PowerElement</a>* m_element = NULL;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor">#endif // SWITCHINGFORM_H</span></div><div class="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdoc">Form to edit the switching data of power elements for electromechanical transient studies...</div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00032">SwitchingForm.h:32</a></div></div> <div class="ttc" id="class_switching_form_base_html"><div class="ttname"><a href="class_switching_form_base.html">SwitchingFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00632">ElementForm.h:632</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_sync_generator_8cpp_source.html b/docs/doxygen/html/_sync_generator_8cpp_source.html index a4d6412..337f0d2 100644 --- a/docs/doxygen/html/_sync_generator_8cpp_source.html +++ b/docs/doxygen/html/_sync_generator_8cpp_source.html @@ -88,18 +88,19 @@ $(document).ready(function(){initNavTree('_sync_generator_8cpp_source.html',''); <div class="title">SyncGenerator.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_sync_machine_form_8h.html">SyncMachineForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_control_element_container_8h.html">ControlElementContainer.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> SyncGenerator::SyncGenerator() : <a class="code" href="class_machines.html">Machines</a>() { Init(); }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> SyncGenerator::SyncGenerator(wxString name) : <a class="code" href="class_machines.html">Machines</a>()</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  Init();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_electricalData.name = name;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> SyncGenerator::~SyncGenerator() {}</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keywordtype">void</span> SyncGenerator::Init()</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">int</span> numPtsSine = 10;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">double</span> mx = 15.0;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">double</span> my = 10.0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> pi = 3.14159265359;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i <= numPtsSine; i++) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">double</span> x = (2.0 * pi / double(numPtsSine)) * <span class="keywordtype">double</span>(i) - pi;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> y = std::sin(x);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_sinePts.push_back(wxPoint2DDouble((x / pi) * mx, y * my));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_electricalData.avr = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_electricalData.speedGov = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keywordtype">void</span> SyncGenerator::DrawSymbol()<span class="keyword"> const</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword"></span>{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// Draw sine.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::vector<wxPoint2DDouble> sinePts;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_sinePts.size(); i++) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  sinePts.push_back(m_sinePts[i] + m_position);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  DrawLine(sinePts);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="class_sync_generator.html#a24b9894fa42473dfb8bcf82221401a97"> 56</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_sync_generator.html#a24b9894fa42473dfb8bcf82221401a97">SyncGenerator::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit Generator"</span>));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec"> 63</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec">SyncGenerator::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>* generatorForm = <span class="keyword">new</span> <a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  generatorForm->SetTitle(_(<span class="stringliteral">"Generator"</span>));</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(generatorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  generatorForm->Destroy();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  generatorForm->Destroy();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> SyncGenerator::GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">double</span> machineBasePower = 1.0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  machineBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Active power</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">double</span> activePower = GetValueFromUnit(data.activePower, data.activePowerUnit);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span>(data.activePowerUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.activePower = (activePower * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  data.activePower = activePower / systemPowerBase;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Reactive power</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">double</span> reactivePower = GetValueFromUnit(data.reactivePower, data.reactivePowerUnit);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span>(data.reactivePowerUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.reactivePower = (reactivePower * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  data.reactivePower = reactivePower / systemPowerBase;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// Max reactive power</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">double</span> maxReactive = GetValueFromUnit(data.maxReactive, data.maxReactiveUnit);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(data.maxReactiveUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.maxReactive = (maxReactive * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  data.maxReactive = maxReactive / systemPowerBase;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// Min reactive power</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">double</span> minReactive = GetValueFromUnit(data.minReactive, data.minReactiveUnit);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(data.minReactiveUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.minReactive = (minReactive * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  data.minReactive = minReactive / systemPowerBase;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">double</span> baseVoltage = GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">double</span> systemBaseImpedance = (baseVoltage * baseVoltage) / systemPowerBase;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordtype">double</span> machineBaseImpedance = (baseVoltage * baseVoltage) / machineBasePower;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// Fault data</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  data.positiveResistance = (data.positiveResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  data.positiveReactance = (data.positiveReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  data.negativeResistance = (data.negativeResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  data.negativeReactance = (data.negativeReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  data.zeroResistance = (data.zeroResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  data.zeroReactance = (data.zeroReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  data.groundResistance = (data.groundResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  data.groundReactance = (data.groundReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  data.faultCurrent[0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  data.faultCurrent[1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  data.faultCurrent[2] = std::complex<double>(0, 0);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="class_sync_generator.html#aaa4c5978dc6d344747d74e36fb3e71d8"> 147</a></span> <span class="keywordtype">void</span> <a class="code" href="class_sync_generator.html#aaa4c5978dc6d344747d74e36fb3e71d8">SyncGenerator::SetNominalVoltage</a>(std::vector<double> nominalVoltage,</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  std::vector<ElectricalUnit> nominalVoltageUnit)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span>(nominalVoltage.size() > 0) {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_electricalData.nominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  m_electricalData.nominalVoltageUnit = nominalVoltageUnit[0];</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="class_sync_generator.html#a9130e8714c1518683540f587aca1201f"> 156</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_sync_generator.html#a9130e8714c1518683540f587aca1201f">SyncGenerator::GetCopy</a>()</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* copy = <span class="keyword">new</span> <a class="code" href="class_sync_generator.html">SyncGenerator</a>();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">auto</span> data = copy->GetElectricalData();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// Copy AVR</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  std::vector<ConnectionLine*> cLineList;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  std::vector<ControlElement*> elementList;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_electricalData.avr->GetContainerCopy(elementList, cLineList);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* avrCopy = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  avrCopy->FillContainer(elementList, cLineList);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  data.avr = avrCopy;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// Copy Speed Governor</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  cLineList.clear();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  elementList.clear();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_electricalData.speedGov->GetContainerCopy(elementList, cLineList);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* speedGovCopy = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  speedGovCopy->FillContainer(elementList, cLineList);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  data.speedGov = speedGovCopy;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  copy->SetElectricalData(data);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="class_sync_generator.html#a9454438d059269c194e1aa648e122f7e"> 184</a></span> wxString <a class="code" href="class_sync_generator.html#a9454438d059269c194e1aa648e122f7e">SyncGenerator::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="keyword"></span>{</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordtype">double</span> activePower = m_electricalData.activePower;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  tipText += _(<span class="stringliteral">"\nP = "</span>) + wxString::FromDouble(activePower, 5);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">switch</span>(m_electricalData.activePowerUnit) {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  tipText += _(<span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  tipText += _(<span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  tipText += _(<span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="class_sync_generator.html#afcb0a1c03dab5ede586e5d15231f2cab"> 230</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_sync_generator.html#afcb0a1c03dab5ede586e5d15231f2cab">SyncGenerator::GetPlotData</a>(<a class="code" href="class_element_plot_data.html">ElementPlotData</a>& plotData)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(!m_electricalData.plotSyncMachine) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  plotData.SetName(m_electricalData.name);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  plotData.SetCurveType(ElementPlotData::CT_SYNC_GENERATOR);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  std::vector<double> absTerminalVoltage, activePower, reactivePower;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_electricalData.terminalVoltageVector.size(); ++i) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  absTerminalVoltage.push_back(std::abs(m_electricalData.terminalVoltageVector[i]));</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  activePower.push_back(std::real(m_electricalData.electricalPowerVector[i]));</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  reactivePower.push_back(std::imag(m_electricalData.electricalPowerVector[i]));</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  plotData.AddData(absTerminalVoltage, _(<span class="stringliteral">"Terminal voltage"</span>));</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  plotData.AddData(activePower, _(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  plotData.AddData(reactivePower, _(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  plotData.AddData(m_electricalData.mechanicalPowerVector, _(<span class="stringliteral">"Mechanical power"</span>));</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  plotData.AddData(m_electricalData.freqVector, _(<span class="stringliteral">"Frequency"</span>));</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  plotData.AddData(m_electricalData.fieldVoltageVector, _(<span class="stringliteral">"Field voltage"</span>));</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  plotData.AddData(m_electricalData.deltaVector, _(<span class="stringliteral">"Delta"</span>));</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> }</div><div class="ttc" id="struct_sync_generator_electrical_data_html"><div class="ttname"><a href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00025">SyncGenerator.h:25</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_sync_machine_form_8h.html">SyncMachineForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_sync_generator_8h.html">SyncGenerator.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_control_element_container_8h.html">ControlElementContainer.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> SyncGenerator::SyncGenerator() : <a class="code" href="class_machines.html">Machines</a>() { Init(); }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> SyncGenerator::SyncGenerator(wxString name) : <a class="code" href="class_machines.html">Machines</a>()</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  Init();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_electricalData.name = name;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> SyncGenerator::~SyncGenerator() {}</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keywordtype">void</span> SyncGenerator::Init()</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">int</span> numPtsSine = 10;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">double</span> mx = 15.0;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">double</span> my = 10.0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> pi = 3.14159265359;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i <= numPtsSine; i++) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">double</span> x = (2.0 * pi / double(numPtsSine)) * <span class="keywordtype">double</span>(i) - pi;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">double</span> y = std::sin(x);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_sinePts.push_back(wxPoint2DDouble((x / pi) * mx, y * my));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_electricalData.avr = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_electricalData.speedGov = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keywordtype">void</span> SyncGenerator::DrawSymbol()<span class="keyword"> const</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword"></span>{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// Draw sine.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  std::vector<wxPoint2DDouble> sinePts;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_sinePts.size(); i++) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  sinePts.push_back(m_sinePts[i] + m_position);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  DrawLine(sinePts);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="class_sync_generator.html#a24b9894fa42473dfb8bcf82221401a97"> 56</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_sync_generator.html#a24b9894fa42473dfb8bcf82221401a97">SyncGenerator::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit Generator"</span>));</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec"> 63</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec">SyncGenerator::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>* generatorForm = <span class="keyword">new</span> <a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  generatorForm->SetTitle(_(<span class="stringliteral">"Generator"</span>));</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(generatorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  generatorForm->Destroy();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  generatorForm->Destroy();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> SyncGenerator::GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordtype">double</span> machineBasePower = 1.0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  machineBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Active power</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">double</span> activePower = GetValueFromUnit(data.activePower, data.activePowerUnit);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span>(data.activePowerUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.activePower = (activePower * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  data.activePower = activePower / systemPowerBase;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Reactive power</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">double</span> reactivePower = GetValueFromUnit(data.reactivePower, data.reactivePowerUnit);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span>(data.reactivePowerUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.reactivePower = (reactivePower * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  data.reactivePower = reactivePower / systemPowerBase;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="comment">// Max reactive power</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">double</span> maxReactive = GetValueFromUnit(data.maxReactive, data.maxReactiveUnit);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(data.maxReactiveUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.maxReactive = (maxReactive * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  data.maxReactive = maxReactive / systemPowerBase;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="comment">// Min reactive power</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">double</span> minReactive = GetValueFromUnit(data.minReactive, data.minReactiveUnit);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(data.minReactiveUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.minReactive = (minReactive * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  data.minReactive = minReactive / systemPowerBase;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">double</span> baseVoltage = GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">double</span> systemBaseImpedance = (baseVoltage * baseVoltage) / systemPowerBase;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordtype">double</span> machineBaseImpedance = (baseVoltage * baseVoltage) / machineBasePower;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// Fault data</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  data.positiveResistance = (data.positiveResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  data.positiveReactance = (data.positiveReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  data.negativeResistance = (data.negativeResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  data.negativeReactance = (data.negativeReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  data.zeroResistance = (data.zeroResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  data.zeroReactance = (data.zeroReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  data.groundResistance = (data.groundResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  data.groundReactance = (data.groundReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  data.faultCurrent[0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  data.faultCurrent[1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  data.faultCurrent[2] = std::complex<double>(0, 0);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="class_sync_generator.html#aaa4c5978dc6d344747d74e36fb3e71d8"> 147</a></span> <span class="keywordtype">void</span> <a class="code" href="class_sync_generator.html#aaa4c5978dc6d344747d74e36fb3e71d8">SyncGenerator::SetNominalVoltage</a>(std::vector<double> nominalVoltage,</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  std::vector<ElectricalUnit> nominalVoltageUnit)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">if</span>(nominalVoltage.size() > 0) {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_electricalData.nominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  m_electricalData.nominalVoltageUnit = nominalVoltageUnit[0];</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="class_sync_generator.html#a9130e8714c1518683540f587aca1201f"> 156</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_sync_generator.html#a9130e8714c1518683540f587aca1201f">SyncGenerator::GetCopy</a>()</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* copy = <span class="keyword">new</span> <a class="code" href="class_sync_generator.html">SyncGenerator</a>();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">auto</span> data = copy->GetElectricalData();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// Copy AVR</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  std::vector<ConnectionLine*> cLineList;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  std::vector<ControlElement*> elementList;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_electricalData.avr->GetContainerCopy(elementList, cLineList);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* avrCopy = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  avrCopy->FillContainer(elementList, cLineList);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  data.avr = avrCopy;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// Copy Speed Governor</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  cLineList.clear();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  elementList.clear();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_electricalData.speedGov->GetContainerCopy(elementList, cLineList);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* speedGovCopy = <span class="keyword">new</span> <a class="code" href="class_control_element_container.html">ControlElementContainer</a>();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  speedGovCopy->FillContainer(elementList, cLineList);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  data.speedGov = speedGovCopy;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  copy->SetElectricalData(data);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="class_sync_generator.html#a9454438d059269c194e1aa648e122f7e"> 184</a></span> wxString <a class="code" href="class_sync_generator.html#a9454438d059269c194e1aa648e122f7e">SyncGenerator::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="keyword"></span>{</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordtype">double</span> activePower = m_electricalData.activePower;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  tipText += _(<span class="stringliteral">"\nP = "</span>) + wxString::FromDouble(activePower, 5);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">switch</span>(m_electricalData.activePowerUnit) {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  tipText += _(<span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  tipText += _(<span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  tipText += _(<span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="class_sync_generator.html#afcb0a1c03dab5ede586e5d15231f2cab"> 230</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_sync_generator.html#afcb0a1c03dab5ede586e5d15231f2cab">SyncGenerator::GetPlotData</a>(<a class="code" href="class_element_plot_data.html">ElementPlotData</a>& plotData)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(!m_electricalData.plotSyncMachine) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  plotData.SetName(m_electricalData.name);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  plotData.SetCurveType(ElementPlotData::CT_SYNC_GENERATOR);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  std::vector<double> absTerminalVoltage, activePower, reactivePower;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_electricalData.terminalVoltageVector.size(); ++i) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  absTerminalVoltage.push_back(std::abs(m_electricalData.terminalVoltageVector[i]));</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  activePower.push_back(std::real(m_electricalData.electricalPowerVector[i]));</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  reactivePower.push_back(std::imag(m_electricalData.electricalPowerVector[i]));</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  plotData.AddData(absTerminalVoltage, _(<span class="stringliteral">"Terminal voltage"</span>));</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  plotData.AddData(activePower, _(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  plotData.AddData(reactivePower, _(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  plotData.AddData(m_electricalData.mechanicalPowerVector, _(<span class="stringliteral">"Mechanical power"</span>));</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  plotData.AddData(m_electricalData.freqVector, _(<span class="stringliteral">"Frequency"</span>));</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  plotData.AddData(m_electricalData.fieldVoltageVector, _(<span class="stringliteral">"Field voltage"</span>));</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  plotData.AddData(m_electricalData.deltaVector, _(<span class="stringliteral">"Delta"</span>));</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> }</div><div class="ttc" id="struct_sync_generator_electrical_data_html"><div class="ttname"><a href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00025">SyncGenerator.h:25</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00052">Element.h:52</a></div></div> <div class="ttc" id="_sync_machine_form_8h_html"><div class="ttname"><a href="_sync_machine_form_8h.html">SyncMachineForm.h</a></div></div> <div class="ttc" id="class_sync_generator_html_afcb0a1c03dab5ede586e5d15231f2cab"><div class="ttname"><a href="class_sync_generator.html#afcb0a1c03dab5ede586e5d15231f2cab">SyncGenerator::GetPlotData</a></div><div class="ttdeci">virtual bool GetPlotData(ElementPlotData &plotData)</div><div class="ttdoc">Fill the plot data. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8cpp_source.html#l00230">SyncGenerator.cpp:230</a></div></div> +<div class="ttc" id="_sync_generator_8h_html"><div class="ttname"><a href="_sync_generator_8h.html">SyncGenerator.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00036">PowerElement.h:36</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00035">PowerElement.h:35</a></div></div> <div class="ttc" id="class_sync_machine_form_html"><div class="ttname"><a href="class_sync_machine_form.html">SyncMachineForm</a></div><div class="ttdoc">Form to edit the synchronous machine power data. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_machine_form_8h_source.html#l00034">SyncMachineForm.h:34</a></div></div> <div class="ttc" id="class_sync_generator_html_a9130e8714c1518683540f587aca1201f"><div class="ttname"><a href="class_sync_generator.html#a9130e8714c1518683540f587aca1201f">SyncGenerator::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8cpp_source.html#l00156">SyncGenerator.cpp:156</a></div></div> -<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00056">ElementPlotData.h:56</a></div></div> +<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00064">ElementPlotData.h:64</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> <div class="ttc" id="class_sync_generator_html_a9454438d059269c194e1aa648e122f7e"><div class="ttname"><a href="class_sync_generator.html#a9454438d059269c194e1aa648e122f7e">SyncGenerator::GetTipText</a></div><div class="ttdeci">virtual wxString GetTipText() const</div><div class="ttdoc">Get the tip text. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8cpp_source.html#l00184">SyncGenerator.cpp:184</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> @@ -109,7 +110,7 @@ $(document).ready(function(){initNavTree('_sync_generator_8cpp_source.html',''); <div class="ttc" id="class_sync_generator_html_aaa4c5978dc6d344747d74e36fb3e71d8"><div class="ttname"><a href="class_sync_generator.html#aaa4c5978dc6d344747d74e36fb3e71d8">SyncGenerator::SetNominalVoltage</a></div><div class="ttdeci">virtual void SetNominalVoltage(std::vector< double > nominalVoltage, std::vector< ElectricalUnit > nominalVoltageUnit)</div><div class="ttdoc">Set nominal voltage of the element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8cpp_source.html#l00147">SyncGenerator.cpp:147</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00040">PowerElement.h:40</a></div></div> <div class="ttc" id="class_sync_generator_html_a24b9894fa42473dfb8bcf82221401a97"><div class="ttname"><a href="class_sync_generator.html#a24b9894fa42473dfb8bcf82221401a97">SyncGenerator::GetContextMenu</a></div><div class="ttdeci">virtual bool GetContextMenu(wxMenu &menu)</div><div class="ttdoc">Get the element contex menu. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8cpp_source.html#l00056">SyncGenerator.cpp:56</a></div></div> -<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00026">Machines.h:26</a></div></div> +<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdoc">Abstract class for rotary machines power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00033">Machines.h:33</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00034">PowerElement.h:34</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_sync_generator_8h.html b/docs/doxygen/html/_sync_generator_8h.html new file mode 100644 index 0000000..3385685 --- /dev/null +++ b/docs/doxygen/html/_sync_generator_8h.html @@ -0,0 +1,117 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/SyncGenerator.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_sync_generator_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">SyncGenerator.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_machines_8h_source.html">Machines.h</a>"</code><br /> +</div> +<p><a href="_sync_generator_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sync_generator.html">SyncGenerator</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Synchronous generator power element. <a href="class_sync_generator.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_sync_generator_8h.html">SyncGenerator.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_sync_generator_8h_source.html b/docs/doxygen/html/_sync_generator_8h_source.html index 8e16b85..98223ed 100644 --- a/docs/doxygen/html/_sync_generator_8h_source.html +++ b/docs/doxygen/html/_sync_generator_8h_source.html @@ -88,26 +88,27 @@ $(document).ready(function(){initNavTree('_sync_generator_8h_source.html','');}) <div class="title">SyncGenerator.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SYNCGENERATOR_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SYNCGENERATOR_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "Machines.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="struct_sync_generator_electrical_data.html"> 25</a></span> <span class="keyword">struct </span><a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="comment">// General</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> nominalPower = 100.0;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> nominalVoltage = 13.8;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalVoltageUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">double</span> activePower = 100.0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">double</span> reactivePower = 0.0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">bool</span> haveMaxReactive = <span class="keyword">false</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> maxReactive = 9999.0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">bool</span> haveMinReactive = <span class="keyword">false</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">double</span> minReactive = -9999.0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">bool</span> useMachineBase = <span class="keyword">true</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> positiveResistance = 0.0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">double</span> positiveReactance = 1.0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> negativeResistance = 0.0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> negativeReactance = 1.0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">double</span> zeroResistance = 0.0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> zeroReactance = 1.0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">double</span> groundResistance = 0.0;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">double</span> groundReactance = 0.0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">bool</span> groundNeutral = <span class="keyword">true</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  std::complex<double> faultCurrent[3] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// Stability</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">bool</span> plotSyncMachine = <span class="keyword">false</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">double</span> inertia = 1.0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">double</span> damping = 0.0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> useAVR = <span class="keyword">false</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">bool</span> useSpeedGovernor = <span class="keyword">false</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">double</span> armResistance = 0.0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">double</span> potierReactance = 0.0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">double</span> satFactor = 0.0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">double</span> syncXd = 0.0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">double</span> syncXq = 0.0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">double</span> transXd = 1.0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">double</span> transXq = 0.0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">double</span> transTd0 = 0.0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">double</span> transTq0 = 0.0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">double</span> subXd = 0.0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">double</span> subXq = 0.0;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">double</span> subTd0 = 0.0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">double</span> subTq0 = 0.0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// Machine state variables</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::complex<double> terminalVoltage;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  std::vector<std::complex<double> > terminalVoltageVector;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  std::complex<double> electricalPower;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  std::vector<std::complex<double> > electricalPowerVector;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">double</span> pm;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::vector<double> mechanicalPowerVector;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">double</span> speed;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  std::vector<double> freqVector;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">double</span> fieldVoltage;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  std::vector<double> fieldVoltageVector;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">double</span> delta;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  std::vector<double> deltaVector;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">double</span> initialFieldVoltage;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Internal machine variables</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">double</span> tranEq;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">double</span> tranEd;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">double</span> subEq;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">double</span> subEd;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">double</span> pe;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">double</span> id;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">double</span> iq;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">double</span> sd;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">double</span> sq;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// Variables to extrapolate</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">double</span> oldId;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">double</span> oldIq;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordtype">double</span> oldPe;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordtype">double</span> oldSd;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">double</span> oldSq;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// Integration constants</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSpeed;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icDelta;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icTranEq;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icTranEd;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSubEq;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSubEd;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// Control</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* avr = NULL;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* speedGov = NULL;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// Control solvers</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>* avrSolver = NULL;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>* speedGovSolver = NULL;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  Machines::SyncMachineModel model = Machines::SM_MODEL_1;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> };</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="class_sync_generator.html"> 133</a></span> <span class="keyword">class </span><a class="code" href="class_sync_generator.html">SyncGenerator</a> : <span class="keyword">public</span> <a class="code" href="class_machines.html">Machines</a></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>(wxString name);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  ~<a class="code" href="class_sync_generator.html">SyncGenerator</a>();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Init();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSymbol() <span class="keyword">const</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">virtual</span> <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> GetElectricalData() { <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">virtual</span> <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetPlotData(<a class="code" href="class_element_plot_data.html">ElementPlotData</a>& plotData);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  std::vector<wxPoint2DDouble> m_sinePts;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> m_electricalData;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> };</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">#endif // SYNCGENERATOR_H</span></div><div class="ttc" id="struct_sync_generator_electrical_data_html"><div class="ttname"><a href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00025">SyncGenerator.h:25</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_sync_generator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SYNCGENERATOR_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SYNCGENERATOR_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_machines_8h.html">Machines.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="struct_sync_generator_electrical_data.html"> 25</a></span> <span class="keyword">struct </span><a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="comment">// General</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> nominalPower = 100.0;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> nominalVoltage = 13.8;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalVoltageUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">double</span> activePower = 100.0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">double</span> reactivePower = 0.0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">bool</span> haveMaxReactive = <span class="keyword">false</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> maxReactive = 9999.0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">bool</span> haveMinReactive = <span class="keyword">false</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">double</span> minReactive = -9999.0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">bool</span> useMachineBase = <span class="keyword">true</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> positiveResistance = 0.0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">double</span> positiveReactance = 1.0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> negativeResistance = 0.0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> negativeReactance = 1.0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">double</span> zeroResistance = 0.0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> zeroReactance = 1.0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">double</span> groundResistance = 0.0;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">double</span> groundReactance = 0.0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">bool</span> groundNeutral = <span class="keyword">true</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  std::complex<double> faultCurrent[3] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// Stability</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">bool</span> plotSyncMachine = <span class="keyword">false</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">double</span> inertia = 1.0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">double</span> damping = 0.0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> useAVR = <span class="keyword">false</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">bool</span> useSpeedGovernor = <span class="keyword">false</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">double</span> armResistance = 0.0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">double</span> potierReactance = 0.0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">double</span> satFactor = 0.0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">double</span> syncXd = 0.0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">double</span> syncXq = 0.0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">double</span> transXd = 1.0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">double</span> transXq = 0.0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">double</span> transTd0 = 0.0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">double</span> transTq0 = 0.0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">double</span> subXd = 0.0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">double</span> subXq = 0.0;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">double</span> subTd0 = 0.0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">double</span> subTq0 = 0.0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// Machine state variables</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::complex<double> terminalVoltage;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  std::vector<std::complex<double> > terminalVoltageVector;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  std::complex<double> electricalPower;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  std::vector<std::complex<double> > electricalPowerVector;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">double</span> pm;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::vector<double> mechanicalPowerVector;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">double</span> speed;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  std::vector<double> freqVector;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">double</span> fieldVoltage;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  std::vector<double> fieldVoltageVector;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">double</span> delta;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  std::vector<double> deltaVector;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">double</span> initialFieldVoltage;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Internal machine variables</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">double</span> tranEq;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">double</span> tranEd;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">double</span> subEq;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">double</span> subEd;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">double</span> pe;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">double</span> id;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">double</span> iq;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">double</span> sd;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">double</span> sq;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="comment">// Variables to extrapolate</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">double</span> oldId;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">double</span> oldIq;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordtype">double</span> oldPe;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordtype">double</span> oldSd;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">double</span> oldSq;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// Integration constants</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSpeed;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icDelta;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icTranEq;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icTranEd;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSubEq;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSubEd;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// Control</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* avr = NULL;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* speedGov = NULL;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// Control solvers</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>* avrSolver = NULL;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>* speedGovSolver = NULL;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  Machines::SyncMachineModel model = Machines::SM_MODEL_1;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> };</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="class_sync_generator.html"> 140</a></span> <span class="keyword">class </span><a class="code" href="class_sync_generator.html">SyncGenerator</a> : <span class="keyword">public</span> <a class="code" href="class_machines.html">Machines</a></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>(wxString name);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  ~<a class="code" href="class_sync_generator.html">SyncGenerator</a>();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Init();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSymbol() <span class="keyword">const</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">virtual</span> <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> GetElectricalData() { <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">virtual</span> <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetPlotData(<a class="code" href="class_element_plot_data.html">ElementPlotData</a>& plotData);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  std::vector<wxPoint2DDouble> m_sinePts;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> m_electricalData;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> };</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor">#endif // SYNCGENERATOR_H</span></div><div class="ttc" id="_machines_8h_html"><div class="ttname"><a href="_machines_8h.html">Machines.h</a></div></div> +<div class="ttc" id="struct_sync_generator_electrical_data_html"><div class="ttname"><a href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00025">SyncGenerator.h:25</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_control_element_solver_html"><div class="ttname"><a href="class_control_element_solver.html">ControlElementSolver</a></div><div class="ttdoc">Solves in the time the control system. Can solve the control system directly from a ControlEditor or ...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00045">ControlElementSolver.h:45</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00036">PowerElement.h:36</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00031">PowerElement.h:31</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220cca"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a></div><div class="ttdeci">ElectricalUnit</div><div class="ttdoc">Electrical units. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00028">PowerElement.h:28</a></div></div> -<div class="ttc" id="struct_integration_constant_html"><div class="ttname"><a href="struct_integration_constant.html">IntegrationConstant</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00105">PowerElement.h:105</a></div></div> +<div class="ttc" id="struct_integration_constant_html"><div class="ttname"><a href="struct_integration_constant.html">IntegrationConstant</a></div><div class="ttdoc">Integration constants to calculate dynamic elements through trapezoidal integration method...</div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00105">PowerElement.h:105</a></div></div> <div class="ttc" id="class_sync_machine_form_html"><div class="ttname"><a href="class_sync_machine_form.html">SyncMachineForm</a></div><div class="ttdoc">Form to edit the synchronous machine power data. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_machine_form_8h_source.html#l00034">SyncMachineForm.h:34</a></div></div> -<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00056">ElementPlotData.h:56</a></div></div> +<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00064">ElementPlotData.h:64</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00039">PowerElement.h:39</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> <div class="ttc" id="class_control_element_container_html"><div class="ttname"><a href="class_control_element_container.html">ControlElementContainer</a></div><div class="ttdoc">Class that can contain all control elements. Can identify (using RTTI) the elements from a generic li...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00045">ControlElementContainer.h:45</a></div></div> -<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00026">Machines.h:26</a></div></div> +<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdoc">Abstract class for rotary machines power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00033">Machines.h:33</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>SyncGenerator.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_sync_generator_8h.html">SyncGenerator.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_sync_machine_form_8cpp_source.html b/docs/doxygen/html/_sync_machine_form_8cpp_source.html index cf10a40..00ffe1f 100644 --- a/docs/doxygen/html/_sync_machine_form_8cpp_source.html +++ b/docs/doxygen/html/_sync_machine_form_8cpp_source.html @@ -88,19 +88,21 @@ $(document).ready(function(){initNavTree('_sync_machine_form_8cpp_source.html',' <div class="title">SyncMachineForm.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_generator_stab_form_8h.html">GeneratorStabForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_sync_machine_form_8h.html">SyncMachineForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "SyncMotor.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> SyncMachineForm::SyncMachineForm(wxWindow* parent, <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator) : <a class="code" href="class_sync_machine_form_base.html">SyncMachineFormBase</a>(parent)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  ReplaceStaticTextLabelChar(m_staticTextPosResistance, L<span class="stringliteral">'\u2081'</span>);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  ReplaceStaticTextLabelChar(m_staticTextPosReactance, L<span class="stringliteral">'\u2081'</span>);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  ReplaceStaticTextLabelChar(m_staticTextNegResistance, L<span class="stringliteral">'\u2082'</span>);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  ReplaceStaticTextLabelChar(m_staticTextNegReactance, L<span class="stringliteral">'\u2082'</span>);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  ReplaceStaticTextLabelChar(m_staticTextZeroResistance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  ReplaceStaticTextLabelChar(m_staticTextZeroReactance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  Layout();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_syncGenerator = syncGenerator;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_parent = parent;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_textCtrlnominalPower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.nominalPower));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">switch</span>(data.nominalPowerUnit) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_choiceNominalPower->SetSelection(0);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_choiceNominalPower->SetSelection(1);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_choiceNominalPower->SetSelection(2);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_textCtrlActivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.activePower));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_choiceActivePower->SetSelection(0);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>:</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_choiceActivePower->SetSelection(1);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_choiceActivePower->SetSelection(2);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_choiceActivePower->SetSelection(3);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_choiceReactivePower->SetSelection(0);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_choiceReactivePower->SetSelection(1);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_checkBoxMaxReactive->SetValue(data.haveMaxReactive);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_textCtrlMaxRectivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.maxReactive));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">switch</span>(data.maxReactiveUnit) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_choiceMaxRectivePower->SetSelection(0);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_choiceMaxRectivePower->SetSelection(1);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_choiceMaxRectivePower->SetSelection(2);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_choiceMaxRectivePower->SetSelection(3);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_textCtrlMaxRectivePower->Enable(data.haveMaxReactive);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_choiceMaxRectivePower->Enable(data.haveMaxReactive);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_checkBoxMinReactive->SetValue(data.haveMinReactive);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_textCtrlMinRectivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.minReactive));</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">switch</span>(data.minReactiveUnit) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_choiceMinRectivePower->SetSelection(0);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_choiceMinRectivePower->SetSelection(1);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_choiceMinRectivePower->SetSelection(2);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_choiceMinRectivePower->SetSelection(3);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_textCtrlMinRectivePower->Enable(data.haveMinReactive);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_choiceMinRectivePower->Enable(data.haveMinReactive);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_checkBoxUseMachinePower->SetValue(data.useMachineBase);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_textCtrlPosResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.positiveResistance));</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_textCtrlPosReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.positiveReactance));</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_textCtrlNegResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.negativeResistance));</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  m_textCtrlNegReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.negativeReactance));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_textCtrlZeroResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.zeroResistance));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  m_textCtrlZeroReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.zeroReactance));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_textCtrlGrdResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.groundResistance));</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_textCtrlGrdReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.groundReactance));</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  m_checkBoxGroundNeutral->SetValue(data.groundNeutral);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> SyncMachineForm::SyncMachineForm(wxWindow* parent, <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor) : <a class="code" href="class_sync_machine_form_base.html">SyncMachineFormBase</a>(parent)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_buttonStab->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  ReplaceStaticTextLabelChar(m_staticTextPosResistance, L<span class="stringliteral">'\u2081'</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  ReplaceStaticTextLabelChar(m_staticTextPosReactance, L<span class="stringliteral">'\u2081'</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  ReplaceStaticTextLabelChar(m_staticTextNegResistance, L<span class="stringliteral">'\u2082'</span>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  ReplaceStaticTextLabelChar(m_staticTextNegReactance, L<span class="stringliteral">'\u2082'</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  ReplaceStaticTextLabelChar(m_staticTextZeroResistance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  ReplaceStaticTextLabelChar(m_staticTextZeroReactance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  Layout();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_syncMotor = syncMotor;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  m_parent = parent;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = syncMotor->GetElectricalData();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  m_textCtrlnominalPower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.nominalPower));</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">switch</span>(data.nominalPowerUnit) {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>:</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_choiceNominalPower->SetSelection(0);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>:</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_choiceNominalPower->SetSelection(1);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>:</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_choiceNominalPower->SetSelection(2);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  m_textCtrlActivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.activePower));</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  m_choiceActivePower->SetSelection(0);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>:</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  m_choiceActivePower->SetSelection(1);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>:</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  m_choiceActivePower->SetSelection(2);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>:</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  m_choiceActivePower->SetSelection(3);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  m_choiceReactivePower->SetSelection(0);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  m_choiceReactivePower->SetSelection(1);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  m_checkBoxMaxReactive->SetValue(data.haveMaxReactive);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  m_textCtrlMaxRectivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.maxReactive));</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">switch</span>(data.maxReactiveUnit) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  m_choiceMaxRectivePower->SetSelection(0);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  m_choiceMaxRectivePower->SetSelection(1);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_choiceMaxRectivePower->SetSelection(2);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_choiceMaxRectivePower->SetSelection(3);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  m_textCtrlMaxRectivePower->Enable(data.haveMaxReactive);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  m_choiceMaxRectivePower->Enable(data.haveMaxReactive);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  m_checkBoxMinReactive->SetValue(data.haveMinReactive);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_textCtrlMinRectivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.minReactive));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">switch</span>(data.minReactiveUnit) {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  m_choiceMinRectivePower->SetSelection(0);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  m_choiceMinRectivePower->SetSelection(1);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_choiceMinRectivePower->SetSelection(2);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_choiceMinRectivePower->SetSelection(3);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_textCtrlMinRectivePower->Enable(data.haveMinReactive);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  m_choiceMinRectivePower->Enable(data.haveMinReactive);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  m_checkBoxUseMachinePower->SetValue(data.useMachineBase);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  m_textCtrlPosResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.positiveResistance));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  m_textCtrlPosReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.positiveReactance));</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  m_textCtrlNegResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.negativeResistance));</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  m_textCtrlNegReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.negativeReactance));</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  m_textCtrlZeroResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.zeroResistance));</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  m_textCtrlZeroReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.zeroReactance));</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  m_textCtrlGrdResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.groundResistance));</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  m_textCtrlGrdReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.groundReactance));</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  m_checkBoxGroundNeutral->SetValue(data.groundNeutral);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> SyncMachineForm::~SyncMachineForm() {}</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="keywordtype">void</span> SyncMachineForm::OnCheckMaxReactive(wxCommandEvent& event)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  m_textCtrlMaxRectivePower->Enable(m_checkBoxMaxReactive->GetValue());</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  m_choiceMaxRectivePower->Enable(m_checkBoxMaxReactive->GetValue());</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="keywordtype">void</span> SyncMachineForm::OnCheckMinReactive(wxCommandEvent& event)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  m_textCtrlMinRectivePower->Enable(m_checkBoxMinReactive->GetValue());</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_choiceMinRectivePower->Enable(m_checkBoxMinReactive->GetValue());</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="keywordtype">void</span> SyncMachineForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="keywordtype">void</span> SyncMachineForm::OnStabilityButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">if</span>(m_syncGenerator) {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="class_generator_stab_form.html">GeneratorStabForm</a>* stabForm = <span class="keyword">new</span> <a class="code" href="class_generator_stab_form.html">GeneratorStabForm</a>(m_parent, m_syncGenerator);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">if</span>(stabForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  stabForm->Destroy();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  stabForm->Destroy();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  EndModal(wxID_CANCEL);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="keywordtype">bool</span> SyncMachineForm::ValidateData()</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">if</span>(m_syncGenerator) {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_syncGenerator->GetElectricalData();</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlnominalPower->GetValue(), data.nominalPower,</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Nominal power\"."</span>)))</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">switch</span>(m_choiceNominalPower->GetSelection()) {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlActivePower->GetValue(), data.activePower,</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Active power\"."</span>)))</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">switch</span>(m_choiceActivePower->GetSelection()) {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  data.haveMaxReactive = m_checkBoxMaxReactive->GetValue();</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">if</span>(data.haveMaxReactive) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlMaxRectivePower->GetValue(), data.maxReactive,</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Max reactive power\"."</span>)))</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">switch</span>(m_choiceMaxRectivePower->GetSelection()) {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  data.haveMinReactive = m_checkBoxMinReactive->GetValue();</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">if</span>(data.haveMinReactive) {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlMinRectivePower->GetValue(), data.minReactive,</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Min reactive power\"."</span>)))</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">switch</span>(m_choiceMinRectivePower->GetSelection()) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  data.useMachineBase = m_checkBoxUseMachinePower->GetValue();</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlPosResistance->GetValue(), data.positiveResistance,</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Positive resistance\"."</span>)))</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlPosReactance->GetValue(), data.positiveReactance,</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Positive reactance\"."</span>)))</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlNegResistance->GetValue(), data.negativeResistance,</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Negative resistance\"."</span>)))</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlNegReactance->GetValue(), data.negativeReactance,</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Negative reactance\"."</span>)))</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero resistance\"."</span>)))</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroReactance,</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero reactance\"."</span>)))</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlGrdResistance->GetValue(), data.groundResistance,</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Ground resistance\"."</span>)))</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlGrdReactance->GetValue(), data.groundReactance,</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Ground reactance\"."</span>)))</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  data.groundNeutral = m_checkBoxGroundNeutral->GetValue();</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  m_syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_syncMotor) {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = m_syncMotor->GetElectricalData();</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlnominalPower->GetValue(), data.nominalPower,</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Nominal power\"."</span>)))</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">switch</span>(m_choiceNominalPower->GetSelection()) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlActivePower->GetValue(), data.activePower,</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Active power\"."</span>)))</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">switch</span>(m_choiceActivePower->GetSelection()) {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> </div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  data.haveMaxReactive = m_checkBoxMaxReactive->GetValue();</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">if</span>(data.haveMaxReactive) {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlMaxRectivePower->GetValue(), data.maxReactive,</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Max reactive power\"."</span>)))</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">switch</span>(m_choiceMaxRectivePower->GetSelection()) {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  data.haveMinReactive = m_checkBoxMinReactive->GetValue();</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">if</span>(data.haveMinReactive) {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlMinRectivePower->GetValue(), data.minReactive,</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Min reactive power\"."</span>)))</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">switch</span>(m_choiceMinRectivePower->GetSelection()) {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> </div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  data.useMachineBase = m_checkBoxUseMachinePower->GetValue();</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlPosResistance->GetValue(), data.positiveResistance,</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Positive resistance\"."</span>)))</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlPosReactance->GetValue(), data.positiveReactance,</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Positive reactance\"."</span>)))</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlNegResistance->GetValue(), data.negativeResistance,</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Negative resistance\"."</span>)))</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> </div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlNegReactance->GetValue(), data.negativeReactance,</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Negative reactance\"."</span>)))</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> </div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero resistance\"."</span>)))</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroReactance,</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero reactance\"."</span>)))</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlGrdResistance->GetValue(), data.groundResistance,</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Ground resistance\"."</span>)))</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> </div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlGrdReactance->GetValue(), data.groundReactance,</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Ground reactance\"."</span>)))</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> </div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  data.groundNeutral = m_checkBoxGroundNeutral->GetValue();</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  m_syncMotor->SetElectricalData(data);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> </div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="keywordtype">void</span> SyncMachineForm::ReplaceStaticTextLabelChar(wxStaticText* staticText, <span class="keywordtype">wchar_t</span> newChar)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  wxString label = staticText->GetLabel();</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  label[label.length() - 2] = newChar;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  staticText->SetLabel(label);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> }</div><div class="ttc" id="struct_sync_generator_electrical_data_html"><div class="ttname"><a href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00025">SyncGenerator.h:25</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_generator_stab_form_8h.html">GeneratorStabForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_sync_machine_form_8h.html">SyncMachineForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_sync_generator_8h.html">SyncGenerator.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_sync_motor_8h.html">SyncMotor.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> SyncMachineForm::SyncMachineForm(wxWindow* parent, <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator) : <a class="code" href="class_sync_machine_form_base.html">SyncMachineFormBase</a>(parent)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  ReplaceStaticTextLabelChar(m_staticTextPosResistance, L<span class="stringliteral">'\u2081'</span>);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  ReplaceStaticTextLabelChar(m_staticTextPosReactance, L<span class="stringliteral">'\u2081'</span>);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  ReplaceStaticTextLabelChar(m_staticTextNegResistance, L<span class="stringliteral">'\u2082'</span>);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  ReplaceStaticTextLabelChar(m_staticTextNegReactance, L<span class="stringliteral">'\u2082'</span>);</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  ReplaceStaticTextLabelChar(m_staticTextZeroResistance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  ReplaceStaticTextLabelChar(m_staticTextZeroReactance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  Layout();</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_syncGenerator = syncGenerator;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_parent = parent;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetElectricalData();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_textCtrlnominalPower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.nominalPower));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">switch</span>(data.nominalPowerUnit) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_choiceNominalPower->SetSelection(0);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>:</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_choiceNominalPower->SetSelection(1);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_choiceNominalPower->SetSelection(2);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_textCtrlActivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.activePower));</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_choiceActivePower->SetSelection(0);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>:</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_choiceActivePower->SetSelection(1);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_choiceActivePower->SetSelection(2);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>:</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_choiceActivePower->SetSelection(3);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_choiceReactivePower->SetSelection(0);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_choiceReactivePower->SetSelection(1);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_checkBoxMaxReactive->SetValue(data.haveMaxReactive);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_textCtrlMaxRectivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.maxReactive));</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">switch</span>(data.maxReactiveUnit) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_choiceMaxRectivePower->SetSelection(0);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_choiceMaxRectivePower->SetSelection(1);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_choiceMaxRectivePower->SetSelection(2);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_choiceMaxRectivePower->SetSelection(3);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_textCtrlMaxRectivePower->Enable(data.haveMaxReactive);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_choiceMaxRectivePower->Enable(data.haveMaxReactive);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  m_checkBoxMinReactive->SetValue(data.haveMinReactive);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  m_textCtrlMinRectivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.minReactive));</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">switch</span>(data.minReactiveUnit) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  m_choiceMinRectivePower->SetSelection(0);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  m_choiceMinRectivePower->SetSelection(1);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_choiceMinRectivePower->SetSelection(2);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_choiceMinRectivePower->SetSelection(3);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_textCtrlMinRectivePower->Enable(data.haveMinReactive);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  m_choiceMinRectivePower->Enable(data.haveMinReactive);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_checkBoxUseMachinePower->SetValue(data.useMachineBase);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  m_textCtrlPosResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.positiveResistance));</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_textCtrlPosReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.positiveReactance));</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_textCtrlNegResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.negativeResistance));</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  m_textCtrlNegReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.negativeReactance));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_textCtrlZeroResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.zeroResistance));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  m_textCtrlZeroReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.zeroReactance));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  m_textCtrlGrdResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.groundResistance));</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_textCtrlGrdReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncGenerator::StringFromDouble</a>(data.groundReactance));</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  m_checkBoxGroundNeutral->SetValue(data.groundNeutral);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> SyncMachineForm::SyncMachineForm(wxWindow* parent, <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor) : <a class="code" href="class_sync_machine_form_base.html">SyncMachineFormBase</a>(parent)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_buttonStab->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  ReplaceStaticTextLabelChar(m_staticTextPosResistance, L<span class="stringliteral">'\u2081'</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  ReplaceStaticTextLabelChar(m_staticTextPosReactance, L<span class="stringliteral">'\u2081'</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  ReplaceStaticTextLabelChar(m_staticTextNegResistance, L<span class="stringliteral">'\u2082'</span>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  ReplaceStaticTextLabelChar(m_staticTextNegReactance, L<span class="stringliteral">'\u2082'</span>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  ReplaceStaticTextLabelChar(m_staticTextZeroResistance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  ReplaceStaticTextLabelChar(m_staticTextZeroReactance, L<span class="stringliteral">'\u2080'</span>);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  Layout();</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_syncMotor = syncMotor;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  m_parent = parent;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = syncMotor->GetElectricalData();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  m_textCtrlnominalPower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.nominalPower));</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">switch</span>(data.nominalPowerUnit) {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>:</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_choiceNominalPower->SetSelection(0);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>:</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  m_choiceNominalPower->SetSelection(1);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>:</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  m_choiceNominalPower->SetSelection(2);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  m_textCtrlActivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.activePower));</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">switch</span>(data.activePowerUnit) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  m_choiceActivePower->SetSelection(0);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>:</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  m_choiceActivePower->SetSelection(1);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>:</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  m_choiceActivePower->SetSelection(2);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>:</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  m_choiceActivePower->SetSelection(3);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_textCtrlReactivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.reactivePower));</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">switch</span>(data.reactivePowerUnit) {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  m_choiceReactivePower->SetSelection(0);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  m_choiceReactivePower->SetSelection(1);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  m_choiceReactivePower->SetSelection(2);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  m_choiceReactivePower->SetSelection(3);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  m_checkBoxMaxReactive->SetValue(data.haveMaxReactive);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  m_textCtrlMaxRectivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.maxReactive));</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">switch</span>(data.maxReactiveUnit) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  m_choiceMaxRectivePower->SetSelection(0);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  m_choiceMaxRectivePower->SetSelection(1);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_choiceMaxRectivePower->SetSelection(2);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_choiceMaxRectivePower->SetSelection(3);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  m_textCtrlMaxRectivePower->Enable(data.haveMaxReactive);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  m_choiceMaxRectivePower->Enable(data.haveMaxReactive);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  m_checkBoxMinReactive->SetValue(data.haveMinReactive);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_textCtrlMinRectivePower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.minReactive));</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">switch</span>(data.minReactiveUnit) {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>:</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  m_choiceMinRectivePower->SetSelection(0);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>:</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  m_choiceMinRectivePower->SetSelection(1);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>:</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_choiceMinRectivePower->SetSelection(2);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>:</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_choiceMinRectivePower->SetSelection(3);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_textCtrlMinRectivePower->Enable(data.haveMinReactive);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  m_choiceMinRectivePower->Enable(data.haveMinReactive);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  m_checkBoxUseMachinePower->SetValue(data.useMachineBase);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  m_textCtrlPosResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.positiveResistance));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  m_textCtrlPosReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.positiveReactance));</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  m_textCtrlNegResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.negativeResistance));</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  m_textCtrlNegReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.negativeReactance));</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  m_textCtrlZeroResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.zeroResistance));</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  m_textCtrlZeroReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.zeroReactance));</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  m_textCtrlGrdResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.groundResistance));</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  m_textCtrlGrdReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">SyncMotor::StringFromDouble</a>(data.groundReactance));</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  m_checkBoxGroundNeutral->SetValue(data.groundNeutral);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> SyncMachineForm::~SyncMachineForm() {}</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="keywordtype">void</span> SyncMachineForm::OnCheckMaxReactive(wxCommandEvent& event)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  m_textCtrlMaxRectivePower->Enable(m_checkBoxMaxReactive->GetValue());</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  m_choiceMaxRectivePower->Enable(m_checkBoxMaxReactive->GetValue());</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="keywordtype">void</span> SyncMachineForm::OnCheckMinReactive(wxCommandEvent& event)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span> {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  m_textCtrlMinRectivePower->Enable(m_checkBoxMinReactive->GetValue());</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  m_choiceMinRectivePower->Enable(m_checkBoxMinReactive->GetValue());</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="keywordtype">void</span> SyncMachineForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="keywordtype">void</span> SyncMachineForm::OnStabilityButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">if</span>(m_syncGenerator) {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="class_generator_stab_form.html">GeneratorStabForm</a>* stabForm = <span class="keyword">new</span> <a class="code" href="class_generator_stab_form.html">GeneratorStabForm</a>(m_parent, m_syncGenerator);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">if</span>(stabForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  stabForm->Destroy();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  stabForm->Destroy();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  EndModal(wxID_CANCEL);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="keywordtype">bool</span> SyncMachineForm::ValidateData()</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">if</span>(m_syncGenerator) {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = m_syncGenerator->GetElectricalData();</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlnominalPower->GetValue(), data.nominalPower,</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Nominal power\"."</span>)))</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">switch</span>(m_choiceNominalPower->GetSelection()) {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlActivePower->GetValue(), data.activePower,</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Active power\"."</span>)))</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">switch</span>(m_choiceActivePower->GetSelection()) {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  data.haveMaxReactive = m_checkBoxMaxReactive->GetValue();</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">if</span>(data.haveMaxReactive) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlMaxRectivePower->GetValue(), data.maxReactive,</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Max reactive power\"."</span>)))</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">switch</span>(m_choiceMaxRectivePower->GetSelection()) {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  data.haveMinReactive = m_checkBoxMinReactive->GetValue();</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">if</span>(data.haveMinReactive) {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlMinRectivePower->GetValue(), data.minReactive,</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Min reactive power\"."</span>)))</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">switch</span>(m_choiceMinRectivePower->GetSelection()) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  }</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span> </div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  data.useMachineBase = m_checkBoxUseMachinePower->GetValue();</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlPosResistance->GetValue(), data.positiveResistance,</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Positive resistance\"."</span>)))</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlPosReactance->GetValue(), data.positiveReactance,</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Positive reactance\"."</span>)))</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlNegResistance->GetValue(), data.negativeResistance,</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Negative resistance\"."</span>)))</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> </div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlNegReactance->GetValue(), data.negativeReactance,</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Negative reactance\"."</span>)))</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero resistance\"."</span>)))</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroReactance,</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero reactance\"."</span>)))</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlGrdResistance->GetValue(), data.groundResistance,</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Ground resistance\"."</span>)))</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span>(!m_syncGenerator->DoubleFromString(m_parent, m_textCtrlGrdReactance->GetValue(), data.groundReactance,</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Ground reactance\"."</span>)))</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  data.groundNeutral = m_checkBoxGroundNeutral->GetValue();</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  m_syncGenerator->SetElectricalData(data);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_syncMotor) {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = m_syncMotor->GetElectricalData();</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlnominalPower->GetValue(), data.nominalPower,</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Nominal power\"."</span>)))</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">switch</span>(m_choiceNominalPower->GetSelection()) {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlActivePower->GetValue(), data.activePower,</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Active power\"."</span>)))</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">switch</span>(m_choiceActivePower->GetSelection()) {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlReactivePower->GetValue(), data.reactivePower,</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Reactive power\"."</span>)))</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">switch</span>(m_choiceReactivePower->GetSelection()) {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span> </div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  data.haveMaxReactive = m_checkBoxMaxReactive->GetValue();</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">if</span>(data.haveMaxReactive) {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlMaxRectivePower->GetValue(), data.maxReactive,</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Max reactive power\"."</span>)))</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">switch</span>(m_choiceMaxRectivePower->GetSelection()) {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span> </div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  data.haveMinReactive = m_checkBoxMinReactive->GetValue();</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">if</span>(data.haveMinReactive) {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlMinRectivePower->GetValue(), data.minReactive,</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Min reactive power\"."</span>)))</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">switch</span>(m_choiceMinRectivePower->GetSelection()) {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">case</span> 2:</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> </div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  data.useMachineBase = m_checkBoxUseMachinePower->GetValue();</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlPosResistance->GetValue(), data.positiveResistance,</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Positive resistance\"."</span>)))</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlPosReactance->GetValue(), data.positiveReactance,</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Positive reactance\"."</span>)))</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlNegResistance->GetValue(), data.negativeResistance,</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Negative resistance\"."</span>)))</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span> </div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlNegReactance->GetValue(), data.negativeReactance,</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Negative reactance\"."</span>)))</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> </div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero resistance\"."</span>)))</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> </div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroReactance,</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero reactance\"."</span>)))</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlGrdResistance->GetValue(), data.groundResistance,</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Ground resistance\"."</span>)))</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span> </div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">if</span>(!m_syncMotor->DoubleFromString(m_parent, m_textCtrlGrdReactance->GetValue(), data.groundReactance,</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Ground reactance\"."</span>)))</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span> </div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  data.groundNeutral = m_checkBoxGroundNeutral->GetValue();</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  m_syncMotor->SetElectricalData(data);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span> }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span> </div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="keywordtype">void</span> SyncMachineForm::ReplaceStaticTextLabelChar(wxStaticText* staticText, <span class="keywordtype">wchar_t</span> newChar)</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span> {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  wxString label = staticText->GetLabel();</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  label[label.length() - 2] = newChar;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  staticText->SetLabel(label);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span> }</div><div class="ttc" id="struct_sync_generator_electrical_data_html"><div class="ttname"><a href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00025">SyncGenerator.h:25</a></div></div> <div class="ttc" id="_sync_machine_form_8h_html"><div class="ttname"><a href="_sync_machine_form_8h.html">SyncMachineForm.h</a></div></div> +<div class="ttc" id="_sync_generator_8h_html"><div class="ttname"><a href="_sync_generator_8h.html">SyncGenerator.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00036">PowerElement.h:36</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="class_sync_machine_form_base_html"><div class="ttname"><a href="class_sync_machine_form_base.html">SyncMachineFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00148">ElementForm.h:148</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> +<div class="ttc" id="_sync_motor_8h_html"><div class="ttname"><a href="_sync_motor_8h.html">SyncMotor.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00035">PowerElement.h:35</a></div></div> <div class="ttc" id="_generator_stab_form_8h_html"><div class="ttname"><a href="_generator_stab_form_8h.html">GeneratorStabForm.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00039">PowerElement.h:39</a></div></div> <div class="ttc" id="class_generator_stab_form_html"><div class="ttname"><a href="class_generator_stab_form.html">GeneratorStabForm</a></div><div class="ttdoc">Form to edit the synchronous generator data for electromechanical studies. </div><div class="ttdef"><b>Definition:</b> <a href="_generator_stab_form_8h_source.html#l00035">GeneratorStabForm.h:35</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00040">PowerElement.h:40</a></div></div> <div class="ttc" id="class_element_html_abb2e253ec1e86353cd7160209c96553c"><div class="ttname"><a href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Element::StringFromDouble</a></div><div class="ttdeci">static wxString StringFromDouble(double value, int minDecimal=1)</div><div class="ttdoc">Convert a double value to string. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00320">Element.cpp:320</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00037">PowerElement.h:37</a></div></div> diff --git a/docs/doxygen/html/_sync_machine_form_8h_source.html b/docs/doxygen/html/_sync_machine_form_8h_source.html index bd189b2..15aa6ca 100644 --- a/docs/doxygen/html/_sync_machine_form_8h_source.html +++ b/docs/doxygen/html/_sync_machine_form_8h_source.html @@ -88,11 +88,11 @@ $(document).ready(function(){initNavTree('_sync_machine_form_8h_source.html','') <div class="title">SyncMachineForm.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_sync_machine_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SYNCMACHINEFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SYNCMACHINEFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_generator_stab_form.html">GeneratorStabForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span><a class="code" href="class_sync_generator.html">SyncGenerator</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">class </span><a class="code" href="class_sync_motor.html">SyncMotor</a>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_sync_machine_form.html"> 34</a></span> <span class="keyword">class </span><a class="code" href="class_sync_machine_form.html">SyncMachineForm</a> : <span class="keyword">public</span> <a class="code" href="class_sync_machine_form_base.html">SyncMachineFormBase</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>(wxWindow* parent, <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>(wxWindow* parent, <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); };</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCheckMaxReactive(wxCommandEvent& event);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCheckMinReactive(wxCommandEvent& event);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStabilityButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ReplaceStaticTextLabelChar(wxStaticText* staticText, <span class="keywordtype">wchar_t</span> newChar);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* m_syncGenerator = NULL;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* m_syncMotor = NULL;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#endif // SYNCMACHINEFORM_H</span></div><div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<a href="_sync_machine_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SYNCMACHINEFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SYNCMACHINEFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_generator_stab_form.html">GeneratorStabForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span><a class="code" href="class_sync_generator.html">SyncGenerator</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">class </span><a class="code" href="class_sync_motor.html">SyncMotor</a>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="class_sync_machine_form.html"> 34</a></span> <span class="keyword">class </span><a class="code" href="class_sync_machine_form.html">SyncMachineForm</a> : <span class="keyword">public</span> <a class="code" href="class_sync_machine_form_base.html">SyncMachineFormBase</a></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>(wxWindow* parent, <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>(wxWindow* parent, <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); };</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCheckMaxReactive(wxCommandEvent& event);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCheckMinReactive(wxCommandEvent& event);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStabilityButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ReplaceStaticTextLabelChar(wxStaticText* staticText, <span class="keywordtype">wchar_t</span> newChar);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* m_syncGenerator = NULL;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* m_syncMotor = NULL;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> };</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="preprocessor">#endif // SYNCMACHINEFORM_H</span></div><div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="class_sync_machine_form_base_html"><div class="ttname"><a href="class_sync_machine_form_base.html">SyncMachineFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00148">ElementForm.h:148</a></div></div> <div class="ttc" id="class_sync_machine_form_html"><div class="ttname"><a href="class_sync_machine_form.html">SyncMachineForm</a></div><div class="ttdoc">Form to edit the synchronous machine power data. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_machine_form_8h_source.html#l00034">SyncMachineForm.h:34</a></div></div> <div class="ttc" id="class_generator_stab_form_html"><div class="ttname"><a href="class_generator_stab_form.html">GeneratorStabForm</a></div><div class="ttdoc">Form to edit the synchronous generator data for electromechanical studies. </div><div class="ttdef"><b>Definition:</b> <a href="_generator_stab_form_8h_source.html#l00035">GeneratorStabForm.h:35</a></div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_sync_motor_8cpp_source.html b/docs/doxygen/html/_sync_motor_8cpp_source.html index 54f9987..7c4589b 100644 --- a/docs/doxygen/html/_sync_motor_8cpp_source.html +++ b/docs/doxygen/html/_sync_motor_8cpp_source.html @@ -88,7 +88,7 @@ $(document).ready(function(){initNavTree('_sync_motor_8cpp_source.html','');}); <div class="title">SyncMotor.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_sync_machine_form_8h.html">SyncMachineForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "SyncMotor.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> SyncMotor::SyncMotor() : <a class="code" href="class_machines.html">Machines</a>() {}</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> SyncMotor::SyncMotor(wxString name) : <a class="code" href="class_machines.html">Machines</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> SyncMotor::~SyncMotor() {}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keywordtype">void</span> SyncMotor::DrawSymbol()<span class="keyword"> const </span>{ DrawArc(m_position, 12, 30, 330, 10, GL_LINE_STRIP); }</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="class_sync_motor.html#a7b3102220ea5f7e19690af045a6c8278"> 25</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_sync_motor.html#a7b3102220ea5f7e19690af045a6c8278">SyncMotor::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit Synchronous Condenser"</span>));</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_sync_motor.html#a3201b22e0271517f5ed3df85da6cee6f"> 33</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_sync_motor.html#a3201b22e0271517f5ed3df85da6cee6f">SyncMotor::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>* syncMotorForm = <span class="keyword">new</span> <a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  syncMotorForm->SetTitle(_(<span class="stringliteral">"Synchronous Condenser"</span>));</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span>(syncMotorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  syncMotorForm->Destroy();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  syncMotorForm->Destroy();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> SyncMotor::GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">double</span> machineBasePower = 1.0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  machineBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// Active power</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> activePower = GetValueFromUnit(data.activePower, data.activePowerUnit);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span>(data.activePowerUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.activePower = (activePower * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  data.activePower = activePower / systemPowerBase;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// Reactive power</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">double</span> reactivePower = GetValueFromUnit(data.reactivePower, data.reactivePowerUnit);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(data.reactivePowerUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.reactivePower = (reactivePower * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  data.reactivePower = reactivePower / systemPowerBase;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Max reactive power</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">double</span> maxReactive = GetValueFromUnit(data.maxReactive, data.maxReactiveUnit);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>(data.maxReactiveUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.maxReactive = (maxReactive * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  data.maxReactive = maxReactive / systemPowerBase;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// Min reactive power</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">double</span> minReactive = GetValueFromUnit(data.minReactive, data.minReactiveUnit);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(data.minReactiveUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.minReactive = (minReactive * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  data.minReactive = minReactive / systemPowerBase;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">double</span> baseVoltage = GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">double</span> systemBaseImpedance = (baseVoltage * baseVoltage) / systemPowerBase;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">double</span> machineBaseImpedance = (baseVoltage * baseVoltage) / machineBasePower;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Fault data</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  data.positiveResistance = (data.positiveResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  data.positiveReactance = (data.positiveReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  data.negativeResistance = (data.negativeResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  data.negativeReactance = (data.negativeReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  data.zeroResistance = (data.zeroResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  data.zeroReactance = (data.zeroReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  data.groundResistance = (data.groundResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  data.groundReactance = (data.groundReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  data.faultCurrent[0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  data.faultCurrent[1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  data.faultCurrent[2] = std::complex<double>(0, 0);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="class_sync_motor.html#a038162c828595f58782fe97dea2c864d"> 117</a></span> <span class="keywordtype">void</span> <a class="code" href="class_sync_motor.html#a038162c828595f58782fe97dea2c864d">SyncMotor::SetNominalVoltage</a>(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span>(nominalVoltage.size() > 0) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_electricalData.nominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_electricalData.nominalVoltageUnit = nominalVoltageUnit[0];</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="class_sync_motor.html#a035b63a3dfd356daff0bf1cee9672313"> 125</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_sync_motor.html#a035b63a3dfd356daff0bf1cee9672313">SyncMotor::GetCopy</a>()</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* copy = <span class="keyword">new</span> <a class="code" href="class_sync_motor.html">SyncMotor</a>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="class_sync_motor.html#a2ab8e43d5452f5d7f9ac375566a65210"> 132</a></span> wxString <a class="code" href="class_sync_motor.html#a2ab8e43d5452f5d7f9ac375566a65210">SyncMotor::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword"></span>{</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">double</span> activePower = m_electricalData.activePower;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  tipText += _(<span class="stringliteral">"\nP = "</span>) + wxString::FromDouble(activePower, 5);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">switch</span>(m_electricalData.activePowerUnit) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  tipText += _(<span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  tipText += _(<span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  tipText += _(<span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_sync_machine_form_8h.html">SyncMachineForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_sync_motor_8h.html">SyncMotor.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> SyncMotor::SyncMotor() : <a class="code" href="class_machines.html">Machines</a>() {}</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> SyncMotor::SyncMotor(wxString name) : <a class="code" href="class_machines.html">Machines</a>() { m_electricalData.name = name; }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> SyncMotor::~SyncMotor() {}</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keywordtype">void</span> SyncMotor::DrawSymbol()<span class="keyword"> const </span>{ DrawArc(m_position, 12, 30, 330, 10, GL_LINE_STRIP); }</div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="class_sync_motor.html#a7b3102220ea5f7e19690af045a6c8278"> 25</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_sync_motor.html#a7b3102220ea5f7e19690af045a6c8278">SyncMotor::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit Synchronous Condenser"</span>));</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_sync_motor.html#a3201b22e0271517f5ed3df85da6cee6f"> 33</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_sync_motor.html#a3201b22e0271517f5ed3df85da6cee6f">SyncMotor::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>* syncMotorForm = <span class="keyword">new</span> <a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  syncMotorForm->SetTitle(_(<span class="stringliteral">"Synchronous Condenser"</span>));</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span>(syncMotorForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  syncMotorForm->Destroy();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  syncMotorForm->Destroy();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> SyncMotor::GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">double</span> machineBasePower = 1.0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  machineBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// Active power</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> activePower = GetValueFromUnit(data.activePower, data.activePowerUnit);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">if</span>(data.activePowerUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.activePower = (activePower * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  data.activePower = activePower / systemPowerBase;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  data.activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="comment">// Reactive power</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">double</span> reactivePower = GetValueFromUnit(data.reactivePower, data.reactivePowerUnit);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(data.reactivePowerUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.reactivePower = (reactivePower * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  data.reactivePower = reactivePower / systemPowerBase;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  data.reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">// Max reactive power</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">double</span> maxReactive = GetValueFromUnit(data.maxReactive, data.maxReactiveUnit);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span>(data.maxReactiveUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.maxReactive = (maxReactive * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  data.maxReactive = maxReactive / systemPowerBase;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  data.maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="comment">// Min reactive power</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">double</span> minReactive = GetValueFromUnit(data.minReactive, data.minReactiveUnit);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(data.minReactiveUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(data.useMachineBase) data.minReactive = (minReactive * machineBasePower) / systemPowerBase;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  data.minReactive = minReactive / systemPowerBase;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  data.minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">double</span> baseVoltage = GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">double</span> systemBaseImpedance = (baseVoltage * baseVoltage) / systemPowerBase;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">double</span> machineBaseImpedance = (baseVoltage * baseVoltage) / machineBasePower;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Fault data</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span>(data.useMachineBase) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  data.positiveResistance = (data.positiveResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  data.positiveReactance = (data.positiveReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  data.negativeResistance = (data.negativeResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  data.negativeReactance = (data.negativeReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  data.zeroResistance = (data.zeroResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  data.zeroReactance = (data.zeroReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  data.groundResistance = (data.groundResistance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  data.groundReactance = (data.groundReactance * machineBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  data.faultCurrent[0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  data.faultCurrent[1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  data.faultCurrent[2] = std::complex<double>(0, 0);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="class_sync_motor.html#a038162c828595f58782fe97dea2c864d"> 117</a></span> <span class="keywordtype">void</span> <a class="code" href="class_sync_motor.html#a038162c828595f58782fe97dea2c864d">SyncMotor::SetNominalVoltage</a>(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">if</span>(nominalVoltage.size() > 0) {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_electricalData.nominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  m_electricalData.nominalVoltageUnit = nominalVoltageUnit[0];</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="class_sync_motor.html#a035b63a3dfd356daff0bf1cee9672313"> 125</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_sync_motor.html#a035b63a3dfd356daff0bf1cee9672313">SyncMotor::GetCopy</a>()</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* copy = <span class="keyword">new</span> <a class="code" href="class_sync_motor.html">SyncMotor</a>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="class_sync_motor.html#a2ab8e43d5452f5d7f9ac375566a65210"> 132</a></span> wxString <a class="code" href="class_sync_motor.html#a2ab8e43d5452f5d7f9ac375566a65210">SyncMotor::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keyword"></span>{</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">double</span> activePower = m_electricalData.activePower;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span>(!m_online) activePower = 0.0;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  tipText += _(<span class="stringliteral">"\nP = "</span>) + wxString::FromDouble(activePower, 5);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">switch</span>(m_electricalData.activePowerUnit) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  tipText += _(<span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  tipText += _(<span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  tipText += _(<span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordtype">double</span> reactivePower = m_electricalData.reactivePower;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>(!m_online) reactivePower = 0.0;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  tipText += _(<span class="stringliteral">"\nQ = "</span>) + wxString::FromDouble(reactivePower, 5);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">switch</span>(m_electricalData.reactivePowerUnit) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  tipText += _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  tipText += _(<span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  tipText += _(<span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  tipText += _(<span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_sync_motor_html_a035b63a3dfd356daff0bf1cee9672313"><div class="ttname"><a href="class_sync_motor.html#a035b63a3dfd356daff0bf1cee9672313">SyncMotor::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8cpp_source.html#l00125">SyncMotor.cpp:125</a></div></div> <div class="ttc" id="class_sync_motor_html_a7b3102220ea5f7e19690af045a6c8278"><div class="ttname"><a href="class_sync_motor.html#a7b3102220ea5f7e19690af045a6c8278">SyncMotor::GetContextMenu</a></div><div class="ttdeci">virtual bool GetContextMenu(wxMenu &menu)</div><div class="ttdoc">Get the element contex menu. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8cpp_source.html#l00025">SyncMotor.cpp:25</a></div></div> <div class="ttc" id="class_sync_motor_html_a2ab8e43d5452f5d7f9ac375566a65210"><div class="ttname"><a href="class_sync_motor.html#a2ab8e43d5452f5d7f9ac375566a65210">SyncMotor::GetTipText</a></div><div class="ttdeci">virtual wxString GetTipText() const</div><div class="ttdoc">Get the tip text. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8cpp_source.html#l00132">SyncMotor.cpp:132</a></div></div> @@ -96,14 +96,15 @@ $(document).ready(function(){initNavTree('_sync_motor_8cpp_source.html','');}); <div class="ttc" id="_sync_machine_form_8h_html"><div class="ttname"><a href="_sync_machine_form_8h.html">SyncMachineForm.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00036">PowerElement.h:36</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> +<div class="ttc" id="_sync_motor_8h_html"><div class="ttname"><a href="_sync_motor_8h.html">SyncMotor.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00035">PowerElement.h:35</a></div></div> <div class="ttc" id="class_sync_machine_form_html"><div class="ttname"><a href="class_sync_machine_form.html">SyncMachineForm</a></div><div class="ttdoc">Form to edit the synchronous machine power data. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_machine_form_8h_source.html#l00034">SyncMachineForm.h:34</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00040">PowerElement.h:40</a></div></div> <div class="ttc" id="class_sync_motor_html_a038162c828595f58782fe97dea2c864d"><div class="ttname"><a href="class_sync_motor.html#a038162c828595f58782fe97dea2c864d">SyncMotor::SetNominalVoltage</a></div><div class="ttdeci">virtual void SetNominalVoltage(std::vector< double > nominalVoltage, std::vector< ElectricalUnit > nominalVoltageUnit)</div><div class="ttdoc">Set nominal voltage of the element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8cpp_source.html#l00117">SyncMotor.cpp:117</a></div></div> -<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00026">Machines.h:26</a></div></div> +<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdoc">Abstract class for rotary machines power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00033">Machines.h:33</a></div></div> <div class="ttc" id="class_sync_motor_html_a3201b22e0271517f5ed3df85da6cee6f"><div class="ttname"><a href="class_sync_motor.html#a3201b22e0271517f5ed3df85da6cee6f">SyncMotor::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8cpp_source.html#l00033">SyncMotor.cpp:33</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00034">PowerElement.h:34</a></div></div> <div class="ttc" id="struct_sync_motor_electrical_data_html"><div class="ttname"><a href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00025">SyncMotor.h:25</a></div></div> diff --git a/docs/doxygen/html/_sync_motor_8h.html b/docs/doxygen/html/_sync_motor_8h.html new file mode 100644 index 0000000..4de597b --- /dev/null +++ b/docs/doxygen/html/_sync_motor_8h.html @@ -0,0 +1,117 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/SyncMotor.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_sync_motor_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">SyncMotor.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_machines_8h_source.html">Machines.h</a>"</code><br /> +</div> +<p><a href="_sync_motor_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_sync_motor.html">SyncMotor</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Synchronous motor (synchronous compensator) power element. <a href="class_sync_motor.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_sync_motor_8h.html">SyncMotor.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_sync_motor_8h_source.html b/docs/doxygen/html/_sync_motor_8h_source.html index d443e20..c14907d 100644 --- a/docs/doxygen/html/_sync_motor_8h_source.html +++ b/docs/doxygen/html/_sync_motor_8h_source.html @@ -88,25 +88,26 @@ $(document).ready(function(){initNavTree('_sync_motor_8h_source.html','');}); <div class="title">SyncMotor.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SYNCMOTOR_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SYNCMOTOR_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "Machines.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="struct_sync_motor_electrical_data.html"> 25</a></span> <span class="keyword">struct </span><a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="comment">// General</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> nominalPower = 100.0;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> nominalVoltage = 13.8;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalVoltageUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">double</span> activePower = 100.0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">double</span> reactivePower = 0.0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">bool</span> haveMaxReactive = <span class="keyword">false</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> maxReactive = 9999.0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">bool</span> haveMinReactive = <span class="keyword">false</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">double</span> minReactive = -9999.0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">bool</span> useMachineBase = <span class="keyword">true</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> positiveResistance = 0.0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">double</span> positiveReactance = 1.0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> negativeResistance = 0.0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> negativeReactance = 1.0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">double</span> zeroResistance = 0.0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> zeroReactance = 1.0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">double</span> groundResistance = 0.0;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">double</span> groundReactance = 0.0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">bool</span> groundNeutral = <span class="keyword">true</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  std::complex<double> faultCurrent[3] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// Stability</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">bool</span> plotSyncMachine = <span class="keyword">false</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">double</span> inertia = 1.0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">double</span> damping = 0.0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> useAVR = <span class="keyword">false</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">bool</span> useSpeedGovernor = <span class="keyword">false</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">double</span> armResistance = 0.0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">double</span> potierReactance = 0.0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">double</span> satFactor = 0.0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">double</span> syncXd = 0.0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">double</span> syncXq = 0.0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">double</span> transXd = 1.0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">double</span> transXq = 0.0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">double</span> transTd0 = 0.0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">double</span> transTq0 = 0.0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">double</span> subXd = 0.0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">double</span> subXq = 0.0;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">double</span> subTd0 = 0.0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">double</span> subTq0 = 0.0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// Machine state variables</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::complex<double> terminalVoltage;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  std::vector<std::complex<double> > terminalVoltageVector;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  std::complex<double> electricalPower;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  std::vector<std::complex<double> > electricalPowerVector;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">double</span> pm;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::vector<double> mechanicalPowerVector;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">double</span> speed;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  std::vector<double> freqVector;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">double</span> fieldVoltage;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  std::vector<double> fieldVoltageVector;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">double</span> delta;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  std::vector<double> deltaVector;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">double</span> initialFieldVoltage;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Internal machine variables</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">double</span> tranEq;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">double</span> tranEd;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">double</span> subEq;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">double</span> subEd;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">double</span> pe;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// Variables to extrapolate</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">double</span> oldId;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">double</span> oldIq;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">double</span> oldPe;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// Integration constants</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSpeed;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icDelta;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icTranEq;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icTranEd;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSubEq;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSubEd;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// Control</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* avr = NULL;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* speedGov = NULL;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// Control solvers</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>* avrSolver = NULL;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>* speedGovSolver = NULL;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  Machines::SyncMachineModel model = Machines::SM_MODEL_1;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> };</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="class_sync_motor.html"> 127</a></span> <span class="keyword">class </span><a class="code" href="class_sync_motor.html">SyncMotor</a> : <span class="keyword">public</span> <a class="code" href="class_machines.html">Machines</a></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>(wxString name);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  ~<a class="code" href="class_sync_motor.html">SyncMotor</a>();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSymbol() <span class="keyword">const</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">virtual</span> <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> GetElectricalData() { <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">virtual</span> <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> m_electricalData;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> };</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#endif // SYNCMOTOR_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_sync_motor_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef SYNCMOTOR_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define SYNCMOTOR_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_machines_8h.html">Machines.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_sync_machine_form.html">SyncMachineForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"><a class="line" href="struct_sync_motor_electrical_data.html"> 25</a></span> <span class="keyword">struct </span><a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="comment">// General</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">double</span> nominalPower = 100.0;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">double</span> nominalVoltage = 13.8;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalVoltageUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordtype">double</span> activePower = 100.0;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> activePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordtype">double</span> reactivePower = 0.0;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> reactivePowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordtype">bool</span> haveMaxReactive = <span class="keyword">false</span>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">double</span> maxReactive = 9999.0;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> maxReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordtype">bool</span> haveMinReactive = <span class="keyword">false</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">double</span> minReactive = -9999.0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> minReactiveUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">bool</span> useMachineBase = <span class="keyword">true</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> positiveResistance = 0.0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordtype">double</span> positiveReactance = 1.0;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> negativeResistance = 0.0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">double</span> negativeReactance = 1.0;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">double</span> zeroResistance = 0.0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">double</span> zeroReactance = 1.0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordtype">double</span> groundResistance = 0.0;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">double</span> groundReactance = 0.0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">bool</span> groundNeutral = <span class="keyword">true</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  std::complex<double> faultCurrent[3] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="comment">// Stability</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">bool</span> plotSyncMachine = <span class="keyword">false</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordtype">double</span> inertia = 1.0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">double</span> damping = 0.0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">bool</span> useAVR = <span class="keyword">false</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">bool</span> useSpeedGovernor = <span class="keyword">false</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">double</span> armResistance = 0.0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">double</span> potierReactance = 0.0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordtype">double</span> satFactor = 0.0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordtype">double</span> syncXd = 0.0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">double</span> syncXq = 0.0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">double</span> transXd = 1.0;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">double</span> transXq = 0.0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordtype">double</span> transTd0 = 0.0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordtype">double</span> transTq0 = 0.0;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordtype">double</span> subXd = 0.0;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">double</span> subXq = 0.0;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">double</span> subTd0 = 0.0;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">double</span> subTq0 = 0.0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// Machine state variables</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::complex<double> terminalVoltage;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  std::vector<std::complex<double> > terminalVoltageVector;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  std::complex<double> electricalPower;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  std::vector<std::complex<double> > electricalPowerVector;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">double</span> pm;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  std::vector<double> mechanicalPowerVector;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">double</span> speed;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  std::vector<double> freqVector;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">double</span> fieldVoltage;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  std::vector<double> fieldVoltageVector;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">double</span> delta;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  std::vector<double> deltaVector;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">double</span> initialFieldVoltage;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Internal machine variables</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">double</span> tranEq;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">double</span> tranEd;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">double</span> subEq;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">double</span> subEd;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">double</span> pe;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// Variables to extrapolate</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">double</span> oldId;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">double</span> oldIq;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">double</span> oldPe;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// Integration constants</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSpeed;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icDelta;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icTranEq;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icTranEd;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSubEq;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="struct_integration_constant.html">IntegrationConstant</a> icSubEd;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// Control</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* avr = NULL;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="class_control_element_container.html">ControlElementContainer</a>* speedGov = NULL;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// Control solvers</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>* avrSolver = NULL;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="class_control_element_solver.html">ControlElementSolver</a>* speedGovSolver = NULL;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  Machines::SyncMachineModel model = Machines::SM_MODEL_1;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> };</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="class_sync_motor.html"> 134</a></span> <span class="keyword">class </span><a class="code" href="class_sync_motor.html">SyncMotor</a> : <span class="keyword">public</span> <a class="code" href="class_machines.html">Machines</a></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>(wxString name);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  ~<a class="code" href="class_sync_motor.html">SyncMotor</a>();</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DrawSymbol() <span class="keyword">const</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">virtual</span> <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> GetElectricalData() { <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">virtual</span> <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricalData(<a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> m_electricalData;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> };</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">#endif // SYNCMOTOR_H</span></div><div class="ttc" id="_machines_8h_html"><div class="ttname"><a href="_machines_8h.html">Machines.h</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_control_element_solver_html"><div class="ttname"><a href="class_control_element_solver.html">ControlElementSolver</a></div><div class="ttdoc">Solves in the time the control system. Can solve the control system directly from a ControlEditor or ...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_solver_8h_source.html#l00045">ControlElementSolver.h:45</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00036">PowerElement.h:36</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00031">PowerElement.h:31</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220cca"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a></div><div class="ttdeci">ElectricalUnit</div><div class="ttdoc">Electrical units. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00028">PowerElement.h:28</a></div></div> -<div class="ttc" id="struct_integration_constant_html"><div class="ttname"><a href="struct_integration_constant.html">IntegrationConstant</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00105">PowerElement.h:105</a></div></div> +<div class="ttc" id="struct_integration_constant_html"><div class="ttname"><a href="struct_integration_constant.html">IntegrationConstant</a></div><div class="ttdoc">Integration constants to calculate dynamic elements through trapezoidal integration method...</div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00105">PowerElement.h:105</a></div></div> <div class="ttc" id="class_sync_machine_form_html"><div class="ttname"><a href="class_sync_machine_form.html">SyncMachineForm</a></div><div class="ttdoc">Form to edit the synchronous machine power data. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_machine_form_8h_source.html#l00034">SyncMachineForm.h:34</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00039">PowerElement.h:39</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> <div class="ttc" id="class_control_element_container_html"><div class="ttname"><a href="class_control_element_container.html">ControlElementContainer</a></div><div class="ttdoc">Class that can contain all control elements. Can identify (using RTTI) the elements from a generic li...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_container_8h_source.html#l00045">ControlElementContainer.h:45</a></div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> -<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00026">Machines.h:26</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> +<div class="ttc" id="class_machines_html"><div class="ttname"><a href="class_machines.html">Machines</a></div><div class="ttdoc">Abstract class for rotary machines power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_machines_8h_source.html#l00033">Machines.h:33</a></div></div> <div class="ttc" id="struct_sync_motor_electrical_data_html"><div class="ttname"><a href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00025">SyncMotor.h:25</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>SyncMotor.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_sync_motor_8h.html">SyncMotor.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_text_8cpp_source.html b/docs/doxygen/html/_text_8cpp_source.html index 836d285..d7d9290 100644 --- a/docs/doxygen/html/_text_8cpp_source.html +++ b/docs/doxygen/html/_text_8cpp_source.html @@ -88,55 +88,65 @@ $(document).ready(function(){initNavTree('_text_8cpp_source.html','');}); <div class="title">Text.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_text_form_8h.html">TextForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "Text.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "Line.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "Transformer.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "IndMotor.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "SyncMotor.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "Load.h"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "Inductor.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "Capacitor.h"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> Text::Text() : <a class="code" href="class_graphical_element.html">GraphicalElement</a>() { SetText(m_text); }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> Text::Text(wxPoint2DDouble position) : <a class="code" href="class_graphical_element.html">GraphicalElement</a>()</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_position = position;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  SetText(m_text);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> Text::~Text()</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span>(m_glString) <span class="keyword">delete</span> m_glString;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span>(m_glStringArray) <span class="keyword">delete</span> m_glStringArray;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0"> 47</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Text::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword"></span>{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  wxPoint2DDouble ptR = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -m_angle);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keywordtype">void</span> Text::Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  wxScreenDC dc;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// Draw selection rectangle</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// Push the current matrix on stack.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  glPushMatrix();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// Rotate the matrix around the object position.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  glColor4d(0.0, 0.5, 1.0, 0.5);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(m_position + wxPoint2DDouble(m_borderSize / 2.0, m_borderSize / 2.0), m_rect.m_width,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_rect.m_height);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// Draw text (layer 2)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span>(!m_isMultlineText) { <span class="comment">// Only one line</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_glString->bind();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_glString->render(m_position.m_x, m_position.m_y);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  } <span class="keywordflow">else</span> { <span class="comment">// Multiples lines</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_glStringArray->bind();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// The text will be printed centralized.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">double</span> lineHeight = m_height / (double)m_numberOfLines;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < m_numberOfLines; i++) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_glStringArray->get(i)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  .render(m_position.m_x, m_position.m_y - m_height / 2.0 + lineHeight / 2.0 + lineHeight * <span class="keywordtype">double</span>(i));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  glPopMatrix();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="class_text.html#a9923c820cd77b411257ba48beceafeaa"> 92</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_text.html#a9923c820cd77b411257ba48beceafeaa">Text::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword"></span>{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>(m_angle == 0.0 || m_angle == 180.0) <span class="keywordflow">return</span> m_rect.Intersects(rect);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <a class="code" href="class_element.html#a01563b5b2fed2860132f4dd1593f9eea">RotatedRectanglesIntersects</a>(m_rect, rect, m_angle, 0.0);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">void</span> Text::SetText(wxString text)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_text = text;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  wxScreenDC dc;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  GLuint* idString = NULL;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  GLuint* idStringArray = NULL;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span>(m_glString) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">delete</span> m_glString;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_glString = NULL;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  idString = <span class="keyword">new</span> GLuint;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  glGenTextures(1, idString);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(m_glStringArray) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">delete</span> m_glStringArray;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_glStringArray = NULL;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  idStringArray = <span class="keyword">new</span> GLuint;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  glGenTextures(1, idStringArray);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_numberOfLines = m_text.Freq(<span class="charliteral">'\n'</span>) + 1;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(m_numberOfLines == 1) { <span class="comment">// Only one line</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_isMultlineText = <span class="keyword">false</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_glString = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(m_text);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_glString->setFont(font);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_glString->consolidate(&dc);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_width = m_glString->getWidth();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_height = m_glString->getheight();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_isMultlineText = <span class="keyword">true</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_glStringArray = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string_array.html">wxGLStringArray</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  dc.SetFont(font);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_width = 0.0;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_height = 0.0;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  wxString multText = m_text;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < m_numberOfLines; ++i) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  wxString nextLine;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  wxString currentLine = multText.BeforeFirst(<span class="charliteral">'\n'</span>, &nextLine);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  multText = nextLine;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  m_glStringArray->addString(currentLine);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  wxSize size = dc.GetTextExtent(currentLine);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(size.GetWidth() > m_width) m_width = size.GetWidth();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  m_height += size.GetHeight();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_glStringArray->setFont(font);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_glStringArray->consolidate(&dc);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span>(idString) glDeleteTextures(1, idString);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span>(idStringArray) glDeleteTextures(1, idStringArray);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">// Update text rectangle.</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_position);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3"> 162</a></span> <span class="keywordtype">void</span> <a class="code" href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Text::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_angle += rotAngle;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keywordtype">bool</span> Text::ShowForm(wxWindow* parent, std::vector<Element*> elementList)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="class_text_form.html">TextForm</a>* textForm = <span class="keyword">new</span> <a class="code" href="class_text_form.html">TextForm</a>(parent, <span class="keyword">this</span>, elementList);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span>(textForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  textForm->Destroy();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  textForm->Destroy();</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keywordtype">void</span> Text::UpdateText(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">switch</span>(m_elementType) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">case</span> TYPE_NONE:</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  SetText(m_text);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <a class="code" href="class_bus.html">Bus</a>* bus = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span>(bus) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordtype">double</span> baseVoltage = data.nominalVoltage;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span>(data.nominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) baseVoltage *= 1e3;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordtype">double</span> baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  SetText(bus->GetElectricalData().name);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">case</span> DATA_VOLTAGE: {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordtype">double</span> voltage = std::abs(data.voltage);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  SetText(wxString::FromDouble(voltage, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  SetText(wxString::FromDouble(voltage * baseVoltage, m_decimalPlaces) + <span class="stringliteral">" V"</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  SetText(wxString::FromDouble(voltage * baseVoltage / 1e3, m_decimalPlaces) + <span class="stringliteral">" kV"</span>);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">case</span> DATA_ANGLE: {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordtype">double</span> angle = std::arg(data.voltage);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</a>: {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  SetText(wxString::FromDouble(angle, m_decimalPlaces) + <span class="stringliteral">" rad"</span>);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a>: {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  SetText(wxString::FromDouble(wxRadToDeg(angle), m_decimalPlaces) + (wxString)L<span class="stringliteral">'\u00B0'</span>);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordtype">double</span> faultCurrent[3] = {std::abs(data.faultCurrent[0]), std::abs(data.faultCurrent[1]),</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  std::abs(data.faultCurrent[2])};</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  wxString str =</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="stringliteral">"Ia = "</span> + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  str += <span class="stringliteral">"\nIb = "</span> + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  str += <span class="stringliteral">"\nIc = "</span> + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  SetText(str);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  wxString str = <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  SetText(str);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  wxString str =</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  SetText(str);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">case</span> DATA_SC_VOLTAGE: {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordtype">double</span> faultVoltage[3] = {std::abs(data.faultVoltage[0]), std::abs(data.faultVoltage[1]),</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  std::abs(data.faultVoltage[2])};</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  wxString str =</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="stringliteral">"Va = "</span> + wxString::FromDouble(faultVoltage[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  str += <span class="stringliteral">"\nVb = "</span> + wxString::FromDouble(faultVoltage[1], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  str += <span class="stringliteral">"\nVc = "</span> + wxString::FromDouble(faultVoltage[2], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  SetText(str);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  wxString str = <span class="stringliteral">"Va = "</span> +</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  wxString::FromDouble(faultVoltage[0] * baseVoltage, m_decimalPlaces) +</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  str += <span class="stringliteral">"\nVb = "</span> +</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  wxString::FromDouble(faultVoltage[1] * baseVoltage, m_decimalPlaces) + <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  str += <span class="stringliteral">"\nVc = "</span> +</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  wxString::FromDouble(faultVoltage[2] * baseVoltage, m_decimalPlaces) + <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  SetText(str);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  wxString str =</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="stringliteral">"Va = "</span> +</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  wxString::FromDouble(faultVoltage[0] * baseVoltage / 1e3, m_decimalPlaces) + <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  str += <span class="stringliteral">"\nVb = "</span> +</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  wxString::FromDouble(faultVoltage[1] * baseVoltage / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  str += <span class="stringliteral">"\nVc = "</span> +</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  wxString::FromDouble(faultVoltage[2] * baseVoltage / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  SetText(str);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">case</span> DATA_SC_POWER: {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  SetText(wxString::FromDouble(data.scPower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  SetText(wxString::FromDouble(data.scPower * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VA"</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  SetText(wxString::FromDouble(data.scPower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="stringliteral">" kVA"</span>);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  SetText(wxString::FromDouble(data.scPower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="stringliteral">" MVA"</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = <span class="keyword">static_cast<</span><a class="code" href="class_sync_generator.html">SyncGenerator</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span>(syncGenerator) {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordtype">double</span> baseVoltage = syncGenerator->GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordtype">double</span> baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  SetText(data.name);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordtype">double</span> activePower = data.activePower;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">if</span>(!syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) activePower = 0.0;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  SetText(wxString::FromDouble(activePower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  SetText(wxString::FromDouble(activePower * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  SetText(wxString::FromDouble(activePower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  SetText(wxString::FromDouble(activePower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordtype">double</span> reactivePower = data.reactivePower;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span>(!syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) reactivePower = 0.0;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  SetText(wxString::FromDouble(reactivePower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  SetText(wxString::FromDouble(reactivePower * systemPowerBase, m_decimalPlaces) +</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  SetText(wxString::FromDouble(reactivePower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  SetText(wxString::FromDouble(reactivePower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordtype">double</span> faultCurrent[3] = {std::abs(data.faultCurrent[0]), std::abs(data.faultCurrent[1]),</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  std::abs(data.faultCurrent[2])};</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  wxString str =</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="stringliteral">"Ia = "</span> + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  str += <span class="stringliteral">"\nIb = "</span> + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  str += <span class="stringliteral">"\nIc = "</span> + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  SetText(str);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  wxString str = <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  SetText(str);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  wxString str =</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  SetText(str);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <a class="code" href="class_line.html">Line</a>* line = <span class="keyword">static_cast<</span><a class="code" href="class_line.html">Line</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">if</span>(line) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = line->GetElectricalData();</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordtype">double</span> baseVoltage = data.nominalVoltage;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span>(data.nominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) baseVoltage *= 1e3;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordtype">double</span> baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  SetText(data.name);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE: {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordtype">double</span> activePF = std::real(data.powerFlow[m_direction]);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) activePF = 0.0;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  SetText(wxString::FromDouble(activePF, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  SetText(wxString::FromDouble(activePF * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  SetText(wxString::FromDouble(activePF * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  SetText(wxString::FromDouble(activePF * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  }</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordtype">double</span> reactivePF = std::imag(data.powerFlow[m_direction]);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) reactivePF = 0.0;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  SetText(wxString::FromDouble(reactivePF, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordtype">double</span> losses = std::abs(std::real(data.powerFlow[0]) + std::real(data.powerFlow[1]));</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) losses = 0.0;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  SetText(wxString::FromDouble(losses, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  SetText(wxString::FromDouble(losses * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  SetText(wxString::FromDouble(losses * systemPowerBase / 1e3, m_decimalPlaces) + <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  SetText(wxString::FromDouble(losses * systemPowerBase / 1e6, m_decimalPlaces) + <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordtype">double</span> current = std::abs(data.current[m_direction]);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) current = 0.0;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  SetText(wxString::FromDouble(current, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  SetText(wxString::FromDouble(current * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  SetText(wxString::FromDouble(current * baseCurrent / 1e3, m_decimalPlaces) + <span class="stringliteral">" kA"</span>);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordtype">double</span> faultCurrent[3] = {std::abs(data.faultCurrent[m_direction][0]),</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  std::abs(data.faultCurrent[m_direction][1]),</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  std::abs(data.faultCurrent[m_direction][2])};</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) faultCurrent[0] = faultCurrent[1] = faultCurrent[2] = 0.0;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  wxString str =</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="stringliteral">"Ia = "</span> + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  str += <span class="stringliteral">"\nIb = "</span> + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  str += <span class="stringliteral">"\nIc = "</span> + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  SetText(str);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  wxString str = <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  SetText(str);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  wxString str =</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  SetText(str);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  }</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = <span class="keyword">static_cast<</span><a class="code" href="class_transformer.html">Transformer</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">if</span>(transformer) {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transformer->GetElectricalData();</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordtype">double</span> baseVoltage[2] = {data.primaryNominalVoltage, data.secondaryNominalVoltage};</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">if</span>(data.primaryNominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) baseVoltage[0] *= 1e3;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordflow">if</span>(data.secondaryNominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) baseVoltage[1] *= 1e3;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordtype">double</span> baseCurrent[2] = {systemPowerBase / (std::sqrt(3.0) * baseVoltage[0]),</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  systemPowerBase / (std::sqrt(3.0) * baseVoltage[1])};</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  SetText(data.name);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE: {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordtype">double</span> activePF = std::real(data.powerFlow[m_direction]);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) activePF = 0.0;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  SetText(wxString::FromDouble(activePF, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  SetText(wxString::FromDouble(activePF * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  SetText(wxString::FromDouble(activePF * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  SetText(wxString::FromDouble(activePF * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  }</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordtype">double</span> reactivePF = std::imag(data.powerFlow[m_direction]);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) reactivePF = 0.0;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  SetText(wxString::FromDouble(reactivePF, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordtype">double</span> losses = std::abs(std::real(data.powerFlow[0]) + std::real(data.powerFlow[1]));</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) losses = 0.0;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  SetText(wxString::FromDouble(losses, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  SetText(wxString::FromDouble(losses * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  SetText(wxString::FromDouble(losses * systemPowerBase / 1e3, m_decimalPlaces) + <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  SetText(wxString::FromDouble(losses * systemPowerBase / 1e6, m_decimalPlaces) + <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordtype">double</span> current = std::abs(data.current[m_direction]);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) current = 0.0;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  SetText(wxString::FromDouble(current, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  SetText(wxString::FromDouble(current * baseCurrent[m_direction], m_decimalPlaces) +</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="stringliteral">" A"</span>);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  SetText(</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  wxString::FromDouble(current * baseCurrent[m_direction] / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="stringliteral">" kA"</span>);</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  }</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordtype">double</span> faultCurrent[3] = {std::abs(data.faultCurrent[m_direction][0]),</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  std::abs(data.faultCurrent[m_direction][1]),</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  std::abs(data.faultCurrent[m_direction][2])};</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) faultCurrent[0] = faultCurrent[1] = faultCurrent[2] = 0.0;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  wxString str =</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="stringliteral">"Ia = "</span> + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  str += <span class="stringliteral">"\nIb = "</span> + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  str += <span class="stringliteral">"\nIc = "</span> + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  SetText(str);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  wxString str =</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent[m_direction], m_decimalPlaces) +</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  str += <span class="stringliteral">"\nIb = "</span> + wxString::FromDouble(faultCurrent[1] * baseCurrent[m_direction],</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  m_decimalPlaces) +</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  str += <span class="stringliteral">"\nIc = "</span> + wxString::FromDouble(faultCurrent[2] * baseCurrent[m_direction],</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  m_decimalPlaces) +</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  SetText(str);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  wxString str = <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent[m_direction] / 1e3,</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  m_decimalPlaces) +</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent[m_direction] / 1e3,</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  m_decimalPlaces) +</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent[m_direction] / 1e3,</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  m_decimalPlaces) +</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  SetText(str);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">case</span> TYPE_LOAD: {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <a class="code" href="class_load.html">Load</a>* load = <span class="keyword">static_cast<</span><a class="code" href="class_load.html">Load</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">if</span>(load) {</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = load->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  std::complex<double> sPower(data.activePower, data.reactivePower);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">if</span>(data.loadType == CONST_IMPEDANCE && load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  std::complex<double> v = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(load-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  sPower = std::pow(std::abs(v), 2) * sPower;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  }</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="keywordflow">if</span>(!load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) sPower = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  SetText(data.name);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  }</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  }</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  }</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  }</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  }</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) +</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  }</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  }</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  }</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  }</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  }</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = <span class="keyword">static_cast<</span><a class="code" href="class_sync_motor.html">SyncMotor</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="keywordflow">if</span>(syncMotor) {</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = syncMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  std::complex<double> sPower(data.activePower, data.reactivePower);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">if</span>(!syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) sPower = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  SetText(data.name);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  }</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  }</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  }</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  }</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) +</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  }</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  }</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  }</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  }</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  }</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  }</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = <span class="keyword">static_cast<</span><a class="code" href="class_ind_motor.html">IndMotor</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keywordflow">if</span>(indMotor) {</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data = indMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  std::complex<double> sPower(data.activePower, data.reactivePower);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keywordflow">if</span>(!indMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) sPower = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  SetText(data.name);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  }</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  }</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  }</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  }</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  }</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  }</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) +</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  }</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  }</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  }</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  }</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  }</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  }</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = <span class="keyword">static_cast<</span><a class="code" href="class_capacitor.html">Capacitor</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">if</span>(capacitor) {</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = capacitor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordtype">double</span> reativePower = data.reactivePower;</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <span class="keywordflow">if</span>(!capacitor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>())</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  reativePower = 0.0;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  std::complex<double> v =</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(capacitor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  reativePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  }</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  SetText(data.name);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  SetText(wxString::FromDouble(reativePower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  }</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  }</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  }</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  }</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  }</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  }</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  }</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = <span class="keyword">static_cast<</span><a class="code" href="class_inductor.html">Inductor</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keywordflow">if</span>(inductor) {</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = inductor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keywordtype">double</span> reativePower = data.reactivePower;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordflow">if</span>(!inductor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>())</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  reativePower = 0.0;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  std::complex<double> v =</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(inductor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  reativePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  }</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  SetText(data.name);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  SetText(wxString::FromDouble(reativePower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  }</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  }</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  }</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  }</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  }</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  }</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  }</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  }</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> }</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> </div><div class="line"><a name="l00967"></a><span class="lineno"><a class="line" href="class_text.html#a06e740065c875633e458c0d8f860c43e"> 967</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_text.html#a06e740065c875633e458c0d8f860c43e">Text::GetCopy</a>()</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span> {</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <a class="code" href="class_text.html">Text</a>* copy = <span class="keyword">new</span> <a class="code" href="class_text.html">Text</a>();</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="comment">// The pointers to wxGLString must be different or can cause crashes.</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  copy->m_glString = NULL;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  copy->m_glStringArray = NULL;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  copy->SetText(copy->m_text);</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span> }</div><div class="ttc" id="class_text_html_a51c55b9272f653cfc3cdafe665d5dde0"><div class="ttname"><a href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Text::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00047">Text.cpp:47</a></div></div> -<div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00065">Text.h:65</a></div></div> -<div class="ttc" id="class_graphical_element_html"><div class="ttname"><a href="class_graphical_element.html">GraphicalElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_graphical_element_8h_source.html#l00023">GraphicalElement.h:23</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_text_form_8h.html">TextForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_text_8h.html">Text.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#ifdef USING_WX_3_0_X</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "DegreesAndRadians.h"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="_bus_8h.html">Bus.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="_line_8h.html">Line.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="_transformer_8h.html">Transformer.h</a>"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="_sync_generator_8h.html">SyncGenerator.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="_ind_motor_8h.html">IndMotor.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="_sync_motor_8h.html">SyncMotor.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="_load_8h.html">Load.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="_inductor_8h.html">Inductor.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="_capacitor_8h.html">Capacitor.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> Text::Text() : <a class="code" href="class_graphical_element.html">GraphicalElement</a>() { SetText(m_text); }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> Text::Text(wxPoint2DDouble position) : <a class="code" href="class_graphical_element.html">GraphicalElement</a>()</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_position = position;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  SetText(m_text);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> Text::~Text()</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span>(m_glString) <span class="keyword">delete</span> m_glString;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span>(m_glStringArray) <span class="keyword">delete</span> m_glStringArray;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0"> 47</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Text::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keyword"></span>{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  wxPoint2DDouble ptR = <a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -m_angle);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keywordtype">void</span> Text::Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  wxScreenDC dc;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// Draw selection rectangle</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// Push the current matrix on stack.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  glPushMatrix();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// Rotate the matrix around the object position.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  glColor4d(0.0, 0.5, 1.0, 0.5);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">DrawRectangle</a>(m_position + wxPoint2DDouble(m_borderSize / 2.0, m_borderSize / 2.0), m_rect.m_width,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_rect.m_height);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="comment">// Draw text (layer 2)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span>(!m_isMultlineText) { <span class="comment">// Only one line</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_glString->bind();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_glString->render(m_position.m_x, m_position.m_y);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  } <span class="keywordflow">else</span> { <span class="comment">// Multiples lines</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_glStringArray->bind();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="comment">// The text will be printed centralized.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">double</span> lineHeight = m_height / (double)m_numberOfLines;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < m_numberOfLines; i++) {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  m_glStringArray->get(i)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  .render(m_position.m_x, m_position.m_y - m_height / 2.0 + lineHeight / 2.0 + lineHeight * <span class="keywordtype">double</span>(i));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  glPopMatrix();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="class_text.html#a9923c820cd77b411257ba48beceafeaa"> 92</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_text.html#a9923c820cd77b411257ba48beceafeaa">Text::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keyword"></span>{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>(m_angle == 0.0 || m_angle == 180.0) <span class="keywordflow">return</span> m_rect.Intersects(rect);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">return</span> <a class="code" href="class_element.html#a01563b5b2fed2860132f4dd1593f9eea">RotatedRectanglesIntersects</a>(m_rect, rect, m_angle, 0.0);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">void</span> Text::SetText(wxString text)</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_text = text;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  wxScreenDC dc;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  GLuint* idString = NULL;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  GLuint* idStringArray = NULL;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">if</span>(m_glString) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keyword">delete</span> m_glString;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  m_glString = NULL;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  idString = <span class="keyword">new</span> GLuint;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  glGenTextures(1, idString);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(m_glStringArray) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keyword">delete</span> m_glStringArray;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_glStringArray = NULL;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  idStringArray = <span class="keyword">new</span> GLuint;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  glGenTextures(1, idStringArray);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_numberOfLines = m_text.Freq(<span class="charliteral">'\n'</span>) + 1;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(m_numberOfLines == 1) { <span class="comment">// Only one line</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_isMultlineText = <span class="keyword">false</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_glString = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(m_text);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_glString->setFont(font);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  m_glString->consolidate(&dc);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_width = m_glString->getWidth();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  m_height = m_glString->getheight();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_isMultlineText = <span class="keyword">true</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  m_glStringArray = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string_array.html">wxGLStringArray</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  dc.SetFont(font);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  m_width = 0.0;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  m_height = 0.0;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  wxString multText = m_text;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < m_numberOfLines; ++i) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  wxString nextLine;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  wxString currentLine = multText.BeforeFirst(<span class="charliteral">'\n'</span>, &nextLine);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  multText = nextLine;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  m_glStringArray->addString(currentLine);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  wxSize size = dc.GetTextExtent(currentLine);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(size.GetWidth() > m_width) m_width = size.GetWidth();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  m_height += size.GetHeight();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  m_glStringArray->setFont(font);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  m_glStringArray->consolidate(&dc);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span>(idString) glDeleteTextures(1, idString);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span>(idStringArray) glDeleteTextures(1, idStringArray);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">// Update text rectangle.</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_position);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3"> 162</a></span> <span class="keywordtype">void</span> <a class="code" href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Text::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  m_angle += rotAngle;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keywordtype">bool</span> Text::ShowForm(wxWindow* parent, std::vector<Element*> elementList)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="class_text_form.html">TextForm</a>* textForm = <span class="keyword">new</span> <a class="code" href="class_text_form.html">TextForm</a>(parent, <span class="keyword">this</span>, elementList);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span>(textForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  textForm->Destroy();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  textForm->Destroy();</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="keywordtype">void</span> Text::UpdateText(<span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">switch</span>(m_elementType) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">case</span> TYPE_NONE:</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  SetText(m_text);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <a class="code" href="class_bus.html">Bus</a>* bus = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span>(bus) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data = bus->GetElectricalData();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordtype">double</span> baseVoltage = data.nominalVoltage;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">if</span>(data.nominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) baseVoltage *= 1e3;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordtype">double</span> baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  SetText(bus->GetElectricalData().name);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">case</span> DATA_VOLTAGE: {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordtype">double</span> voltage = std::abs(data.voltage);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  SetText(wxString::FromDouble(voltage, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  SetText(wxString::FromDouble(voltage * baseVoltage, m_decimalPlaces) + <span class="stringliteral">" V"</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  SetText(wxString::FromDouble(voltage * baseVoltage / 1e3, m_decimalPlaces) + <span class="stringliteral">" kV"</span>);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">case</span> DATA_ANGLE: {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordtype">double</span> angle = std::arg(data.voltage);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</a>: {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  SetText(wxString::FromDouble(angle, m_decimalPlaces) + <span class="stringliteral">" rad"</span>);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a>: {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  SetText(wxString::FromDouble(wxRadToDeg(angle), m_decimalPlaces) + (wxString)L<span class="stringliteral">'\u00B0'</span>);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordtype">double</span> faultCurrent[3] = {std::abs(data.faultCurrent[0]), std::abs(data.faultCurrent[1]),</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  std::abs(data.faultCurrent[2])};</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  wxString str =</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="stringliteral">"Ia = "</span> + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  str += <span class="stringliteral">"\nIb = "</span> + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  str += <span class="stringliteral">"\nIc = "</span> + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  SetText(str);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  wxString str = <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  SetText(str);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  wxString str =</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  SetText(str);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">case</span> DATA_SC_VOLTAGE: {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordtype">double</span> faultVoltage[3] = {std::abs(data.faultVoltage[0]), std::abs(data.faultVoltage[1]),</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  std::abs(data.faultVoltage[2])};</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  wxString str =</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="stringliteral">"Va = "</span> + wxString::FromDouble(faultVoltage[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  str += <span class="stringliteral">"\nVb = "</span> + wxString::FromDouble(faultVoltage[1], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  str += <span class="stringliteral">"\nVc = "</span> + wxString::FromDouble(faultVoltage[2], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  SetText(str);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  wxString str = <span class="stringliteral">"Va = "</span> +</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  wxString::FromDouble(faultVoltage[0] * baseVoltage, m_decimalPlaces) +</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  str += <span class="stringliteral">"\nVb = "</span> +</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  wxString::FromDouble(faultVoltage[1] * baseVoltage, m_decimalPlaces) + <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  str += <span class="stringliteral">"\nVc = "</span> +</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  wxString::FromDouble(faultVoltage[2] * baseVoltage, m_decimalPlaces) + <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  SetText(str);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  wxString str =</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="stringliteral">"Va = "</span> +</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  wxString::FromDouble(faultVoltage[0] * baseVoltage / 1e3, m_decimalPlaces) + <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  str += <span class="stringliteral">"\nVb = "</span> +</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  wxString::FromDouble(faultVoltage[1] * baseVoltage / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  str += <span class="stringliteral">"\nVc = "</span> +</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  wxString::FromDouble(faultVoltage[2] * baseVoltage / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  SetText(str);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">case</span> DATA_SC_POWER: {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  SetText(wxString::FromDouble(data.scPower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  SetText(wxString::FromDouble(data.scPower * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VA"</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  SetText(wxString::FromDouble(data.scPower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="stringliteral">" kVA"</span>);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  SetText(wxString::FromDouble(data.scPower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="stringliteral">" MVA"</span>);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = <span class="keyword">static_cast<</span><a class="code" href="class_sync_generator.html">SyncGenerator</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span>(syncGenerator) {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a> data = syncGenerator->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordtype">double</span> baseVoltage = syncGenerator->GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordtype">double</span> baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  SetText(data.name);</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordtype">double</span> activePower = data.activePower;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">if</span>(!syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) activePower = 0.0;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  SetText(wxString::FromDouble(activePower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  SetText(wxString::FromDouble(activePower * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  SetText(wxString::FromDouble(activePower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  SetText(wxString::FromDouble(activePower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordtype">double</span> reactivePower = data.reactivePower;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span>(!syncGenerator-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) reactivePower = 0.0;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  SetText(wxString::FromDouble(reactivePower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  SetText(wxString::FromDouble(reactivePower * systemPowerBase, m_decimalPlaces) +</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  SetText(wxString::FromDouble(reactivePower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  SetText(wxString::FromDouble(reactivePower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordtype">double</span> faultCurrent[3] = {std::abs(data.faultCurrent[0]), std::abs(data.faultCurrent[1]),</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  std::abs(data.faultCurrent[2])};</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  wxString str =</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="stringliteral">"Ia = "</span> + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  str += <span class="stringliteral">"\nIb = "</span> + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  str += <span class="stringliteral">"\nIc = "</span> + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  SetText(str);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  wxString str = <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  SetText(str);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  wxString str =</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  SetText(str);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <a class="code" href="class_line.html">Line</a>* line = <span class="keyword">static_cast<</span><a class="code" href="class_line.html">Line</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">if</span>(line) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <a class="code" href="struct_line_electrical_data.html">LineElectricalData</a> data = line->GetElectricalData();</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordtype">double</span> baseVoltage = data.nominalVoltage;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span>(data.nominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) baseVoltage *= 1e3;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordtype">double</span> baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  SetText(data.name);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE: {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordtype">double</span> activePF = std::real(data.powerFlow[m_direction]);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) activePF = 0.0;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  SetText(wxString::FromDouble(activePF, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  SetText(wxString::FromDouble(activePF * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  SetText(wxString::FromDouble(activePF * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  SetText(wxString::FromDouble(activePF * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  }</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordtype">double</span> reactivePF = std::imag(data.powerFlow[m_direction]);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) reactivePF = 0.0;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  SetText(wxString::FromDouble(reactivePF, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordtype">double</span> losses = std::abs(std::real(data.powerFlow[0]) + std::real(data.powerFlow[1]));</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) losses = 0.0;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  SetText(wxString::FromDouble(losses, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  SetText(wxString::FromDouble(losses * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  SetText(wxString::FromDouble(losses * systemPowerBase / 1e3, m_decimalPlaces) + <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  SetText(wxString::FromDouble(losses * systemPowerBase / 1e6, m_decimalPlaces) + <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordtype">double</span> current = std::abs(data.current[m_direction]);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) current = 0.0;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  SetText(wxString::FromDouble(current, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  SetText(wxString::FromDouble(current * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>);</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  SetText(wxString::FromDouble(current * baseCurrent / 1e3, m_decimalPlaces) + <span class="stringliteral">" kA"</span>);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordtype">double</span> faultCurrent[3] = {std::abs(data.faultCurrent[m_direction][0]),</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  std::abs(data.faultCurrent[m_direction][1]),</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  std::abs(data.faultCurrent[m_direction][2])};</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">if</span>(!line-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) faultCurrent[0] = faultCurrent[1] = faultCurrent[2] = 0.0;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  wxString str =</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="stringliteral">"Ia = "</span> + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  str += <span class="stringliteral">"\nIb = "</span> + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  str += <span class="stringliteral">"\nIc = "</span> + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  SetText(str);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  wxString str = <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) +</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  SetText(str);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  wxString str =</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  SetText(str);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  }</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = <span class="keyword">static_cast<</span><a class="code" href="class_transformer.html">Transformer</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">if</span>(transformer) {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transformer->GetElectricalData();</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordtype">double</span> baseVoltage[2] = {data.primaryNominalVoltage, data.secondaryNominalVoltage};</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">if</span>(data.primaryNominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) baseVoltage[0] *= 1e3;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordflow">if</span>(data.secondaryNominalVoltageUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>) baseVoltage[1] *= 1e3;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordtype">double</span> baseCurrent[2] = {systemPowerBase / (std::sqrt(3.0) * baseVoltage[0]),</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  systemPowerBase / (std::sqrt(3.0) * baseVoltage[1])};</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  SetText(data.name);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE: {</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordtype">double</span> activePF = std::real(data.powerFlow[m_direction]);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) activePF = 0.0;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  SetText(wxString::FromDouble(activePF, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  SetText(wxString::FromDouble(activePF * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  SetText(wxString::FromDouble(activePF * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  SetText(wxString::FromDouble(activePF * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  }</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordtype">double</span> reactivePF = std::imag(data.powerFlow[m_direction]);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) reactivePF = 0.0;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  SetText(wxString::FromDouble(reactivePF, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordtype">double</span> losses = std::abs(std::real(data.powerFlow[0]) + std::real(data.powerFlow[1]));</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) losses = 0.0;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  SetText(wxString::FromDouble(losses, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  SetText(wxString::FromDouble(losses * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  SetText(wxString::FromDouble(losses * systemPowerBase / 1e3, m_decimalPlaces) + <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  SetText(wxString::FromDouble(losses * systemPowerBase / 1e6, m_decimalPlaces) + <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  }</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordtype">double</span> current = std::abs(data.current[m_direction]);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) current = 0.0;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  SetText(wxString::FromDouble(current, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  SetText(wxString::FromDouble(current * baseCurrent[m_direction], m_decimalPlaces) +</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="stringliteral">" A"</span>);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  SetText(</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  wxString::FromDouble(current * baseCurrent[m_direction] / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="stringliteral">" kA"</span>);</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  }</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordtype">double</span> faultCurrent[3] = {std::abs(data.faultCurrent[m_direction][0]),</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  std::abs(data.faultCurrent[m_direction][1]),</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  std::abs(data.faultCurrent[m_direction][2])};</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="keywordflow">if</span>(!transformer-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) faultCurrent[0] = faultCurrent[1] = faultCurrent[2] = 0.0;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  wxString str =</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="stringliteral">"Ia = "</span> + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  str += <span class="stringliteral">"\nIb = "</span> + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  str += <span class="stringliteral">"\nIc = "</span> + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + <span class="stringliteral">" p.u."</span>;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  SetText(str);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  wxString str =</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent[m_direction], m_decimalPlaces) +</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  str += <span class="stringliteral">"\nIb = "</span> + wxString::FromDouble(faultCurrent[1] * baseCurrent[m_direction],</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  m_decimalPlaces) +</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  str += <span class="stringliteral">"\nIc = "</span> + wxString::FromDouble(faultCurrent[2] * baseCurrent[m_direction],</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  m_decimalPlaces) +</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="stringliteral">" A"</span>;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  SetText(str);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  wxString str = <span class="stringliteral">"Ia = "</span> +</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  wxString::FromDouble(faultCurrent[0] * baseCurrent[m_direction] / 1e3,</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  m_decimalPlaces) +</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  str += <span class="stringliteral">"\nIb = "</span> +</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  wxString::FromDouble(faultCurrent[1] * baseCurrent[m_direction] / 1e3,</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  m_decimalPlaces) +</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  str += <span class="stringliteral">"\nIc = "</span> +</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  wxString::FromDouble(faultCurrent[2] * baseCurrent[m_direction] / 1e3,</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  m_decimalPlaces) +</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="stringliteral">" kA"</span>;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  SetText(str);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">case</span> TYPE_LOAD: {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  <a class="code" href="class_load.html">Load</a>* load = <span class="keyword">static_cast<</span><a class="code" href="class_load.html">Load</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">if</span>(load) {</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <a class="code" href="struct_load_electrical_data.html">LoadElectricalData</a> data = load->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  std::complex<double> sPower(data.activePower, data.reactivePower);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">if</span>(data.loadType == CONST_IMPEDANCE && load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  std::complex<double> v = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(load-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  sPower = std::pow(std::abs(v), 2) * sPower;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  }</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="keywordflow">if</span>(!load-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) sPower = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  SetText(data.name);</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  }</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  }</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  }</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  }</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  }</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) +</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  }</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  }</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  }</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  }</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  }</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = <span class="keyword">static_cast<</span><a class="code" href="class_sync_motor.html">SyncMotor</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="keywordflow">if</span>(syncMotor) {</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <a class="code" href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a> data = syncMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  std::complex<double> sPower(data.activePower, data.reactivePower);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">if</span>(!syncMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) sPower = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  SetText(data.name);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  }</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  }</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  }</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  }</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) +</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  }</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  }</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  }</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  }</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  }</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  }</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = <span class="keyword">static_cast<</span><a class="code" href="class_ind_motor.html">IndMotor</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keywordflow">if</span>(indMotor) {</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <a class="code" href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a> data = indMotor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  std::complex<double> sPower(data.activePower, data.reactivePower);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="keywordflow">if</span>(!indMotor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>()) sPower = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  SetText(data.name);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  }</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" W"</span>);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  }</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="stringliteral">" kW"</span>);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  }</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="stringliteral">" MW"</span>);</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  }</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  }</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  }</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) +</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  }</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  }</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  }</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  }</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  }</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  }</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = <span class="keyword">static_cast<</span><a class="code" href="class_capacitor.html">Capacitor</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">if</span>(capacitor) {</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <a class="code" href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a> data = capacitor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordtype">double</span> reativePower = data.reactivePower;</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <span class="keywordflow">if</span>(!capacitor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>())</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  reativePower = 0.0;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  std::complex<double> v =</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(capacitor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  reativePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  }</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  SetText(data.name);</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  SetText(wxString::FromDouble(reativePower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  }</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  }</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  }</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  }</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  }</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  }</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  }</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = <span class="keyword">static_cast<</span><a class="code" href="class_inductor.html">Inductor</a>*<span class="keyword">></span>(m_element);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keywordflow">if</span>(inductor) {</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="struct_inductor_electrical_data.html">InductorElectricalData</a> data = inductor->GetPUElectricalData(systemPowerBase);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keywordtype">double</span> reativePower = data.reactivePower;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordflow">if</span>(!inductor-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>())</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  reativePower = 0.0;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  std::complex<double> v =</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(inductor-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData().voltage;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  reativePower *= std::pow(std::abs(v), 2);</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  }</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <span class="keywordflow">switch</span>(m_dataType) {</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  SetText(data.name);</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordflow">switch</span>(m_unit) {</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  SetText(wxString::FromDouble(reativePower, m_decimalPlaces) + <span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  }</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase, m_decimalPlaces) + <span class="stringliteral">" VAr"</span>);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  }</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e3, m_decimalPlaces) +</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="stringliteral">" kVAr"</span>);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  }</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e6, m_decimalPlaces) +</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="stringliteral">" MVAr"</span>);</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  }</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  }</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  }</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  }</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  }</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span> }</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> </div><div class="line"><a name="l00967"></a><span class="lineno"><a class="line" href="class_text.html#a06e740065c875633e458c0d8f860c43e"> 967</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_text.html#a06e740065c875633e458c0d8f860c43e">Text::GetCopy</a>()</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span> {</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <a class="code" href="class_text.html">Text</a>* copy = <span class="keyword">new</span> <a class="code" href="class_text.html">Text</a>();</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="comment">// The pointers to wxGLString must be different or can cause crashes.</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  copy->m_glString = NULL;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  copy->m_glStringArray = NULL;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  copy->SetText(copy->m_text);</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span> }</div><div class="ttc" id="class_text_html_a51c55b9272f653cfc3cdafe665d5dde0"><div class="ttname"><a href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Text::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00047">Text.cpp:47</a></div></div> +<div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdoc">Element that shows power element informations in workspace. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00072">Text.h:72</a></div></div> +<div class="ttc" id="class_graphical_element_html"><div class="ttname"><a href="class_graphical_element.html">GraphicalElement</a></div><div class="ttdoc">Abstract class for graphical elements shown with power elements in workspace. </div><div class="ttdef"><b>Definition:</b> <a href="_graphical_element_8h_source.html#l00030">GraphicalElement.h:30</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00032">PowerElement.h:32</a></div></div> <div class="ttc" id="struct_ind_motor_electrical_data_html"><div class="ttname"><a href="struct_ind_motor_electrical_data.html">IndMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00025">IndMotor.h:25</a></div></div> <div class="ttc" id="struct_sync_generator_electrical_data_html"><div class="ttname"><a href="struct_sync_generator_electrical_data.html">SyncGeneratorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00025">SyncGenerator.h:25</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_text_html_afe1f86a497f34cee4809cbd7fda24dc3"><div class="ttname"><a href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Text::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00162">Text.cpp:162</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00030">PowerElement.h:30</a></div></div> <div class="ttc" id="class_element_html_a7dce6c1b97facecf3e3b2f1555858b09"><div class="ttname"><a href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">Element::GetParentList</a></div><div class="ttdeci">virtual std::vector< Element * > GetParentList() const</div><div class="ttdoc">Get the parent list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00506">Element.h:506</a></div></div> +<div class="ttc" id="_transformer_8h_html"><div class="ttname"><a href="_transformer_8h.html">Transformer.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00047">PowerElement.h:47</a></div></div> -<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div></div> +<div class="ttc" id="_sync_generator_8h_html"><div class="ttname"><a href="_sync_generator_8h.html">SyncGenerator.h</a></div></div> +<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div></div> <div class="ttc" id="struct_inductor_electrical_data_html"><div class="ttname"><a href="struct_inductor_electrical_data.html">InductorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00025">Inductor.h:25</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00036">PowerElement.h:36</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00031">PowerElement.h:31</a></div></div> <div class="ttc" id="class_text_html_a9923c820cd77b411257ba48beceafeaa"><div class="ttname"><a href="class_text.html#a9923c820cd77b411257ba48beceafeaa">Text::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00092">Text.cpp:92</a></div></div> <div class="ttc" id="struct_bus_electrical_data_html"><div class="ttname"><a href="struct_bus_electrical_data.html">BusElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00024">Bus.h:24</a></div></div> <div class="ttc" id="class_element_html_a99b213010776b34a27eb814aff288a34"><div class="ttname"><a href="class_element.html#a99b213010776b34a27eb814aff288a34">Element::RotateAtPosition</a></div><div class="ttdeci">virtual wxPoint2DDouble RotateAtPosition(wxPoint2DDouble pointToRotate, double angle, bool degrees=true) const</div><div class="ttdoc">Rotate a point as element position being the origin. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00107">Element.cpp:107</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> +<div class="ttc" id="_sync_motor_8h_html"><div class="ttname"><a href="_sync_motor_8h.html">SyncMotor.h</a></div></div> <div class="ttc" id="class_element_html_a6c37e613808c5ee3bc37bb14a1fe85c8"><div class="ttname"><a href="class_element.html#a6c37e613808c5ee3bc37bb14a1fe85c8">Element::DrawRectangle</a></div><div class="ttdeci">virtual void DrawRectangle(wxPoint2DDouble position, double width, double height, GLenum mode=GL_QUADS) const</div><div class="ttdoc">Draw rectangle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00069">Element.cpp:69</a></div></div> +<div class="ttc" id="_bus_8h_html"><div class="ttname"><a href="_bus_8h.html">Bus.h</a></div></div> <div class="ttc" id="class_text_html_a06e740065c875633e458c0d8f860c43e"><div class="ttname"><a href="class_text.html#a06e740065c875633e458c0d8f860c43e">Text::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00967">Text.cpp:967</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00035">PowerElement.h:35</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="class_element_html_a57c84a8e6eb80f0fea6e23cdd439d5aa"><div class="ttname"><a href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">Element::IsOnline</a></div><div class="ttdeci">bool IsOnline() const</div><div class="ttdoc">Checks if the element is online or offline. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00227">Element.h:227</a></div></div> +<div class="ttc" id="_line_8h_html"><div class="ttname"><a href="_line_8h.html">Line.h</a></div></div> +<div class="ttc" id="_load_8h_html"><div class="ttname"><a href="_load_8h.html">Load.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00039">PowerElement.h:39</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00033">PowerElement.h:33</a></div></div> <div class="ttc" id="class_element_html_a920fe7ba1563615857618f01e64b3284"><div class="ttname"><a href="class_element.html#a920fe7ba1563615857618f01e64b3284">Element::SetPosition</a></div><div class="ttdeci">void SetPosition(const wxPoint2DDouble position)</div><div class="ttdoc">Set the element position and update the rectangle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00025">Element.cpp:25</a></div></div> +<div class="ttc" id="_ind_motor_8h_html"><div class="ttname"><a href="_ind_motor_8h.html">IndMotor.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> <div class="ttc" id="class_text_form_html"><div class="ttname"><a href="class_text_form.html">TextForm</a></div><div class="ttdoc">Form to edit the text graphical data. </div><div class="ttdef"><b>Definition:</b> <a href="_text_form_8h_source.html#l00032">TextForm.h:32</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> <div class="ttc" id="struct_line_electrical_data_html"><div class="ttname"><a href="struct_line_electrical_data.html">LineElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00024">Line.h:24</a></div></div> <div class="ttc" id="struct_load_electrical_data_html"><div class="ttname"><a href="struct_load_electrical_data.html">LoadElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00026">Load.h:26</a></div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> -<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00033">IndMotor.h:33</a></div></div> +<div class="ttc" id="_text_8h_html"><div class="ttname"><a href="_text_8h.html">Text.h</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> +<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdoc">Induction motor power element. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00040">IndMotor.h:40</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00040">PowerElement.h:40</a></div></div> +<div class="ttc" id="_inductor_8h_html"><div class="ttname"><a href="_inductor_8h.html">Inductor.h</a></div></div> <div class="ttc" id="_text_form_8h_html"><div class="ttname"><a href="_text_form_8h.html">TextForm.h</a></div></div> -<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00031">Capacitor.h:31</a></div></div> -<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00031">Inductor.h:31</a></div></div> +<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdoc">Shunt capactior power element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00038">Capacitor.h:38</a></div></div> +<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdoc">Inductor shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00038">Inductor.h:38</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00037">PowerElement.h:37</a></div></div> <div class="ttc" id="struct_transformer_electrical_data_html"><div class="ttname"><a href="struct_transformer_electrical_data.html">TransformerElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00037">Transformer.h:37</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00048">PowerElement.h:48</a></div></div> <div class="ttc" id="classwx_g_l_string_array_html"><div class="ttname"><a href="classwx_g_l_string_array.html">wxGLStringArray</a></div><div class="ttdef"><b>Definition:</b> <a href="wx_g_l_string_8h_source.html#l00168">wxGLString.h:168</a></div></div> <div class="ttc" id="class_element_html_a01563b5b2fed2860132f4dd1593f9eea"><div class="ttname"><a href="class_element.html#a01563b5b2fed2860132f4dd1593f9eea">Element::RotatedRectanglesIntersects</a></div><div class="ttdeci">virtual bool RotatedRectanglesIntersects(wxRect2DDouble rect1, wxRect2DDouble rect2, double angle1, double angle2) const</div><div class="ttdoc">Check if two roteted rectangles intersect. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00147">Element.cpp:147</a></div></div> +<div class="ttc" id="_capacitor_8h_html"><div class="ttname"><a href="_capacitor_8h.html">Capacitor.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00038">PowerElement.h:38</a></div></div> <div class="ttc" id="classwx_g_l_string_html"><div class="ttname"><a href="classwx_g_l_string.html">wxGLString</a></div><div class="ttdef"><b>Definition:</b> <a href="wx_g_l_string_8h_source.html#l00077">wxGLString.h:77</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> <div class="ttc" id="struct_capacitor_electrical_data_html"><div class="ttname"><a href="struct_capacitor_electrical_data.html">CapacitorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00025">Capacitor.h:25</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00034">PowerElement.h:34</a></div></div> <div class="ttc" id="struct_sync_motor_electrical_data_html"><div class="ttname"><a href="struct_sync_motor_electrical_data.html">SyncMotorElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00025">SyncMotor.h:25</a></div></div> diff --git a/docs/doxygen/html/_text_8h.html b/docs/doxygen/html/_text_8h.html new file mode 100644 index 0000000..3c05a89 --- /dev/null +++ b/docs/doxygen/html/_text_8h.html @@ -0,0 +1,155 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/Text.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_text_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#enum-members">Enumerations</a> </div> + <div class="headertitle"> +<div class="title">Text.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_graphical_element_8h_source.html">GraphicalElement.h</a>"</code><br /> +<code>#include "<a class="el" href="_power_element_8h_source.html">PowerElement.h</a>"</code><br /> +<code>#include "wxGLString.h"</code><br /> +</div> +<p><a href="_text_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_text.html">Text</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that shows power element informations in workspace. <a href="class_text.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr class="memitem:a16b11be27a8e9362dd122c4d879e01ae"><td class="memItemLeft" align="right" valign="top"><a id="a16b11be27a8e9362dd122c4d879e01ae"></a>enum  </td><td class="memItemRight" valign="bottom"><b>ElementType</b> { <br /> +  <b>TYPE_NONE</b> = 0, +<b>TYPE_BUS</b>, +<b>TYPE_CAPACITOR</b>, +<b>TYPE_IND_MOTOR</b>, +<br /> +  <b>TYPE_INDUCTOR</b>, +<b>TYPE_LINE</b>, +<b>TYPE_LOAD</b>, +<b>TYPE_SYNC_GENERATOR</b>, +<br /> +  <b>TYPE_SYNC_MOTOR</b>, +<b>TYPE_TRANSFORMER</b> +<br /> + }</td></tr> +<tr class="separator:a16b11be27a8e9362dd122c4d879e01ae"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad8ed01ff3ff33333d8e19db4d2818bb6"><td class="memItemLeft" align="right" valign="top"><a id="ad8ed01ff3ff33333d8e19db4d2818bb6"></a>enum  </td><td class="memItemRight" valign="bottom"><b>DataType</b> { <br /> +  <b>DATA_NAME</b>, +<b>DATA_VOLTAGE</b>, +<b>DATA_ANGLE</b>, +<b>DATA_SC_CURRENT</b>, +<br /> +  <b>DATA_SC_VOLTAGE</b>, +<b>DATA_SC_POWER</b>, +<b>DATA_ACTIVE_POWER</b>, +<b>DATA_REACTIVE_POWER</b>, +<br /> +  <b>DATA_PF_ACTIVE</b>, +<b>DATA_PF_REACTIVE</b>, +<b>DATA_PF_LOSSES</b>, +<b>DATA_PF_CURRENT</b> +<br /> + }</td></tr> +<tr class="separator:ad8ed01ff3ff33333d8e19db4d2818bb6"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_text_8h.html">Text.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_text_8h.js b/docs/doxygen/html/_text_8h.js new file mode 100644 index 0000000..6db81f3 --- /dev/null +++ b/docs/doxygen/html/_text_8h.js @@ -0,0 +1,30 @@ +var _text_8h = +[ + [ "Text", "class_text.html", "class_text" ], + [ "DataType", "_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6", [ + [ "DATA_NAME", "_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ab7040a50973a299b4bb7a583c96daadd", null ], + [ "DATA_VOLTAGE", "_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a2ca371d2e0d1ad3ac5b2b50adfafd9e1", null ], + [ "DATA_ANGLE", "_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a4e82b326f9c3de98460df5362aa44e92", null ], + [ "DATA_SC_CURRENT", "_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6aabd0755439b58817f974429b6fc24b75", null ], + [ "DATA_SC_VOLTAGE", "_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a4c60231ccdc66a26e8496abe76576f24", null ], + [ "DATA_SC_POWER", "_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6af3c8353176bb407fb6b1b40efd5476d1", null ], + [ "DATA_ACTIVE_POWER", "_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6af39976a2a2423b1817236bef5d2213e7", null ], + [ "DATA_REACTIVE_POWER", "_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a77de5416cbae97c24743d0b479d3e942", null ], + [ "DATA_PF_ACTIVE", "_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6aa62cac0375f8d12dad808a2714811d1d", null ], + [ "DATA_PF_REACTIVE", "_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ae1b2bf8507145590a0e4152cc9630d82", null ], + [ "DATA_PF_LOSSES", "_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ad7558996cb619db166f38c76c75bb232", null ], + [ "DATA_PF_CURRENT", "_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ad45f89e02b92507cadf1f1116e9474fb", null ] + ] ], + [ "ElementType", "_text_8h.html#a16b11be27a8e9362dd122c4d879e01ae", [ + [ "TYPE_NONE", "_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea01a66f4d8d66e4614c1c900c5a1c37ff", null ], + [ "TYPE_BUS", "_text_8h.html#a16b11be27a8e9362dd122c4d879e01aeaf00e74cf5eee391e33017bded0e16441", null ], + [ "TYPE_CAPACITOR", "_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea998ba698d626c693ac0221506d9b25f4", null ], + [ "TYPE_IND_MOTOR", "_text_8h.html#a16b11be27a8e9362dd122c4d879e01aead674b87cc573664b0ed19aea4dad9b28", null ], + [ "TYPE_INDUCTOR", "_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea96ea624f93518535cfa4cdbf874fc5a5", null ], + [ "TYPE_LINE", "_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea6a7fcf36ea744349687acad656884ee6", null ], + [ "TYPE_LOAD", "_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea4924f28256f67f848f35fd2c52316425", null ], + [ "TYPE_SYNC_GENERATOR", "_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea04e67f46cc2905135b5d376518542b12", null ], + [ "TYPE_SYNC_MOTOR", "_text_8h.html#a16b11be27a8e9362dd122c4d879e01aeac13da57b6eda9c8ec23ed0a371600320", null ], + [ "TYPE_TRANSFORMER", "_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea111c77888a1c99bf6aae9e70c460cf5c", null ] + ] ] +];
\ No newline at end of file diff --git a/docs/doxygen/html/_text_8h_source.html b/docs/doxygen/html/_text_8h_source.html index 7d6d796..5b4f986 100644 --- a/docs/doxygen/html/_text_8h_source.html +++ b/docs/doxygen/html/_text_8h_source.html @@ -88,34 +88,35 @@ $(document).ready(function(){initNavTree('_text_8h_source.html','');}); <div class="title">Text.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef TEXT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define TEXT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "GraphicalElement.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">class </span><a class="code" href="class_text_form.html">TextForm</a>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">class </span><a class="code" href="class_bus.html">Bus</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">class </span><a class="code" href="class_line.html">Line</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">class </span><a class="code" href="class_transformer.html">Transformer</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">class </span><a class="code" href="class_sync_generator.html">SyncGenerator</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span><a class="code" href="class_ind_motor.html">IndMotor</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span><a class="code" href="class_sync_motor.html">SyncMotor</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">class </span><a class="code" href="class_load.html">Load</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span><a class="code" href="class_inductor.html">Inductor</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span><a class="code" href="class_capacitor.html">Capacitor</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">enum</span> ElementType {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  TYPE_NONE = 0,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  TYPE_BUS,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  TYPE_CAPACITOR,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  TYPE_IND_MOTOR,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  TYPE_INDUCTOR,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  TYPE_LINE,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  TYPE_LOAD,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  TYPE_SYNC_GENERATOR,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  TYPE_SYNC_MOTOR,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  TYPE_TRANSFORMER</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">enum</span> DataType {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  DATA_NAME,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  DATA_VOLTAGE,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  DATA_ANGLE,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  DATA_SC_CURRENT,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  DATA_SC_VOLTAGE,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  DATA_SC_POWER,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  DATA_ACTIVE_POWER,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  DATA_REACTIVE_POWER,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  DATA_PF_ACTIVE,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  DATA_PF_REACTIVE,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  DATA_PF_LOSSES,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  DATA_PF_CURRENT</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="class_text.html"> 65</a></span> <span class="keyword">class </span><a class="code" href="class_text.html">Text</a> : <span class="keyword">public</span> <a class="code" href="class_graphical_element.html">GraphicalElement</a></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="class_text.html">Text</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="class_text.html">Text</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  ~<a class="code" href="class_text.html">Text</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_text.html#a06e740065c875633e458c0d8f860c43e">GetCopy</a>();</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="class_text.html#a4f273ea7008c72533327c25caff2e917"> 73</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_text.html#a4f273ea7008c72533327c25caff2e917">AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position) { <span class="keywordflow">return</span> <span class="keyword">true</span>; };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Contains</a>(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_text.html#a9923c820cd77b411257ba48beceafeaa">Intersects</a>(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, std::vector<Element*> elementList);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">virtual</span> wxString GetText()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_text; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetText(wxString text);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">void</span> SetDataType(<span class="keyword">const</span> DataType& dataType) { m_dataType = dataType; }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordtype">void</span> SetDirection(<span class="keywordtype">int</span> direction) { m_direction = direction; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">void</span> SetElement(<a class="code" href="class_element.html">Element</a>* element) { m_element = element; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordtype">void</span> SetElementNumber(<span class="keywordtype">int</span> elementNumber) { m_elementNumber = elementNumber; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">void</span> SetElementType(<span class="keyword">const</span> ElementType elementType) { m_elementType = elementType; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordtype">void</span> SetFontSize(<span class="keywordtype">int</span> fontSize) { m_fontSize = fontSize; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">void</span> SetUnit(<span class="keyword">const</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> unit) { m_unit = unit; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">void</span> SetDecimalPlaces(<span class="keywordtype">int</span> decimalPlaces) { m_decimalPlaces = decimalPlaces; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">const</span> DataType GetDataType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_dataType; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">int</span> GetDirection()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_direction; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="class_element.html">Element</a>* GetElement() { <span class="keywordflow">return</span> m_element; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">int</span> GetElementNumber()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementNumber; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">const</span> ElementType GetElementType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementType; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">int</span> GetFontSize()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_fontSize; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">const</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> GetUnit()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_unit; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">int</span> GetDecimalPlaces()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_decimalPlaces; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glString = NULL;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="classwx_g_l_string_array.html">wxGLStringArray</a>* m_glStringArray = NULL;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  wxString m_text = _(<span class="stringliteral">"Text"</span>);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordtype">int</span> m_numberOfLines;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">bool</span> m_isMultlineText = <span class="keyword">false</span>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">int</span> m_fontSize = 10;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="class_element.html">Element</a>* m_element = NULL;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  ElementType m_elementType = TYPE_NONE;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordtype">int</span> m_elementNumber;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  DataType m_dataType;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> m_unit;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordtype">int</span> m_direction = 0;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">int</span> m_decimalPlaces = 2;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> };</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor">#endif // TEXT_H</span></div><div class="ttc" id="class_text_html_a51c55b9272f653cfc3cdafe665d5dde0"><div class="ttname"><a href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Text::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00047">Text.cpp:47</a></div></div> -<div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00065">Text.h:65</a></div></div> -<div class="ttc" id="class_graphical_element_html"><div class="ttname"><a href="class_graphical_element.html">GraphicalElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_graphical_element_8h_source.html#l00023">GraphicalElement.h:23</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_text_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef TEXT_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define TEXT_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_graphical_element_8h.html">GraphicalElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_power_element_8h.html">PowerElement.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">class </span><a class="code" href="class_text_form.html">TextForm</a>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">class </span><a class="code" href="class_bus.html">Bus</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">class </span><a class="code" href="class_line.html">Line</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">class </span><a class="code" href="class_transformer.html">Transformer</a>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">class </span><a class="code" href="class_sync_generator.html">SyncGenerator</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span><a class="code" href="class_ind_motor.html">IndMotor</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span><a class="code" href="class_sync_motor.html">SyncMotor</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">class </span><a class="code" href="class_load.html">Load</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span><a class="code" href="class_inductor.html">Inductor</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span><a class="code" href="class_capacitor.html">Capacitor</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">enum</span> ElementType {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  TYPE_NONE = 0,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  TYPE_BUS,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  TYPE_CAPACITOR,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  TYPE_IND_MOTOR,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  TYPE_INDUCTOR,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  TYPE_LINE,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  TYPE_LOAD,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  TYPE_SYNC_GENERATOR,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  TYPE_SYNC_MOTOR,</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  TYPE_TRANSFORMER</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> };</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">enum</span> DataType {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  DATA_NAME,</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  DATA_VOLTAGE,</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  DATA_ANGLE,</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  DATA_SC_CURRENT,</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  DATA_SC_VOLTAGE,</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  DATA_SC_POWER,</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  DATA_ACTIVE_POWER,</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  DATA_REACTIVE_POWER,</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  DATA_PF_ACTIVE,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  DATA_PF_REACTIVE,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  DATA_PF_LOSSES,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  DATA_PF_CURRENT</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> };</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="class_text.html"> 72</a></span> <span class="keyword">class </span><a class="code" href="class_text.html">Text</a> : <span class="keyword">public</span> <a class="code" href="class_graphical_element.html">GraphicalElement</a></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_text.html">Text</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="class_text.html">Text</a>(wxPoint2DDouble position);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  ~<a class="code" href="class_text.html">Text</a>();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_text.html#a06e740065c875633e458c0d8f860c43e">GetCopy</a>();</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="class_text.html#a4f273ea7008c72533327c25caff2e917"> 80</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_text.html#a4f273ea7008c72533327c25caff2e917">AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position) { <span class="keywordflow">return</span> <span class="keyword">true</span>; };</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Contains</a>(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_text.html#a9923c820cd77b411257ba48beceafeaa">Intersects</a>(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, std::vector<Element*> elementList);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText(<span class="keywordtype">double</span> systemPowerBase);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">virtual</span> wxString GetText()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_text; }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetText(wxString text);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keywordtype">void</span> SetDataType(<span class="keyword">const</span> DataType& dataType) { m_dataType = dataType; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordtype">void</span> SetDirection(<span class="keywordtype">int</span> direction) { m_direction = direction; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordtype">void</span> SetElement(<a class="code" href="class_element.html">Element</a>* element) { m_element = element; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordtype">void</span> SetElementNumber(<span class="keywordtype">int</span> elementNumber) { m_elementNumber = elementNumber; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordtype">void</span> SetElementType(<span class="keyword">const</span> ElementType elementType) { m_elementType = elementType; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordtype">void</span> SetFontSize(<span class="keywordtype">int</span> fontSize) { m_fontSize = fontSize; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordtype">void</span> SetUnit(<span class="keyword">const</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> unit) { m_unit = unit; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">void</span> SetDecimalPlaces(<span class="keywordtype">int</span> decimalPlaces) { m_decimalPlaces = decimalPlaces; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">const</span> DataType GetDataType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_dataType; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">int</span> GetDirection()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_direction; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="class_element.html">Element</a>* GetElement() { <span class="keywordflow">return</span> m_element; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordtype">int</span> GetElementNumber()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementNumber; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">const</span> ElementType GetElementType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_elementType; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">int</span> GetFontSize()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_fontSize; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">const</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> GetUnit()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_unit; }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">int</span> GetDecimalPlaces()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_decimalPlaces; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glString = NULL;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="classwx_g_l_string_array.html">wxGLStringArray</a>* m_glStringArray = NULL;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  wxString m_text = _(<span class="stringliteral">"Text"</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordtype">int</span> m_numberOfLines;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordtype">bool</span> m_isMultlineText = <span class="keyword">false</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordtype">int</span> m_fontSize = 10;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="class_element.html">Element</a>* m_element = NULL;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  ElementType m_elementType = TYPE_NONE;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">int</span> m_elementNumber;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  DataType m_dataType;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> m_unit;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordtype">int</span> m_direction = 0;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">int</span> m_decimalPlaces = 2;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> };</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor">#endif // TEXT_H</span></div><div class="ttc" id="class_text_html_a51c55b9272f653cfc3cdafe665d5dde0"><div class="ttname"><a href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Text::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00047">Text.cpp:47</a></div></div> +<div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdoc">Element that shows power element informations in workspace. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00072">Text.h:72</a></div></div> +<div class="ttc" id="class_graphical_element_html"><div class="ttname"><a href="class_graphical_element.html">GraphicalElement</a></div><div class="ttdoc">Abstract class for graphical elements shown with power elements in workspace. </div><div class="ttdef"><b>Definition:</b> <a href="_graphical_element_8h_source.html#l00030">GraphicalElement.h:30</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_text_html_afe1f86a497f34cee4809cbd7fda24dc3"><div class="ttname"><a href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Text::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00162">Text.cpp:162</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="class_text_html_a9923c820cd77b411257ba48beceafeaa"><div class="ttname"><a href="class_text.html#a9923c820cd77b411257ba48beceafeaa">Text::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00092">Text.cpp:92</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220cca"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a></div><div class="ttdeci">ElectricalUnit</div><div class="ttdoc">Electrical units. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00028">PowerElement.h:28</a></div></div> <div class="ttc" id="class_text_html_a06e740065c875633e458c0d8f860c43e"><div class="ttname"><a href="class_text.html#a06e740065c875633e458c0d8f860c43e">Text::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00967">Text.cpp:967</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> -<div class="ttc" id="class_text_html_a4f273ea7008c72533327c25caff2e917"><div class="ttname"><a href="class_text.html#a4f273ea7008c72533327c25caff2e917">Text::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00073">Text.h:73</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> +<div class="ttc" id="class_text_html_a4f273ea7008c72533327c25caff2e917"><div class="ttname"><a href="class_text.html#a4f273ea7008c72533327c25caff2e917">Text::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00080">Text.h:80</a></div></div> <div class="ttc" id="class_text_form_html"><div class="ttname"><a href="class_text_form.html">TextForm</a></div><div class="ttdoc">Form to edit the text graphical data. </div><div class="ttdef"><b>Definition:</b> <a href="_text_form_8h_source.html#l00032">TextForm.h:32</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> -<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div><div class="ttdoc">Switching data of power elements. </div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> -<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00033">IndMotor.h:33</a></div></div> -<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00031">Capacitor.h:31</a></div></div> -<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00031">Inductor.h:31</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> +<div class="ttc" id="_power_element_8h_html"><div class="ttname"><a href="_power_element_8h.html">PowerElement.h</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> +<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdoc">Induction motor power element. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00040">IndMotor.h:40</a></div></div> +<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdoc">Shunt capactior power element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00038">Capacitor.h:38</a></div></div> +<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdoc">Inductor shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00038">Inductor.h:38</a></div></div> +<div class="ttc" id="_graphical_element_8h_html"><div class="ttname"><a href="_graphical_element_8h.html">GraphicalElement.h</a></div></div> <div class="ttc" id="classwx_g_l_string_array_html"><div class="ttname"><a href="classwx_g_l_string_array.html">wxGLStringArray</a></div><div class="ttdef"><b>Definition:</b> <a href="wx_g_l_string_8h_source.html#l00168">wxGLString.h:168</a></div></div> <div class="ttc" id="classwx_g_l_string_html"><div class="ttname"><a href="classwx_g_l_string.html">wxGLString</a></div><div class="ttdef"><b>Definition:</b> <a href="wx_g_l_string_8h_source.html#l00077">wxGLString.h:77</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>Text.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_text_8h.html">Text.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_text_form_8cpp_source.html b/docs/doxygen/html/_text_form_8cpp_source.html index 9fc285f..cec668f 100644 --- a/docs/doxygen/html/_text_form_8cpp_source.html +++ b/docs/doxygen/html/_text_form_8cpp_source.html @@ -88,32 +88,32 @@ $(document).ready(function(){initNavTree('_text_form_8cpp_source.html','');}); <div class="title">TextForm.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_text_form_8h.html">TextForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> TextForm::TextForm(wxWindow* parent, <a class="code" href="class_text.html">Text</a>* text, std::vector<Element*> elementList, <span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  : <a class="code" href="class_text_form_base.html">TextFormBase</a>(parent)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_parent = parent;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_textToEdit = text;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_allElements.GetElementsFromList(elementList);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_systemPowerBase = systemPowerBase;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_text = <span class="keyword">new</span> <a class="code" href="class_text.html">Text</a>();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_text->SetElementType(text->GetElementType());</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_text->SetElementNumber(text->GetElementNumber());</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_text->SetElement(text->GetElement());</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_text->SetDataType(text->GetDataType());</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_text->SetDirection(text->GetDirection());</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_text->SetUnit(text->GetUnit());</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_text->SetDecimalPlaces(text->GetDecimalPlaces());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</span>(!LoadChoices()) {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_choiceName->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_choiceTextType->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_choiceTextFromBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_choiceTextToBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> TextForm::~TextForm() {}</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keywordtype">void</span> TextForm::OnElementChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">switch</span>(m_choiceElement->GetSelection()) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_text->SetElementType(TYPE_BUS);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_text->SetElementType(TYPE_SYNC_GENERATOR);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_text->SetElementType(TYPE_LINE);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_text->SetElementType(TYPE_TRANSFORMER);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">case</span> 4: {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_text->SetElementType(TYPE_LOAD);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">case</span> 5: {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_text->SetElementType(TYPE_CAPACITOR);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">case</span> 6: {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_text->SetElementType(TYPE_INDUCTOR);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">case</span> 7: {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_text->SetElementType(TYPE_SYNC_MOTOR);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">case</span> 8: {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_text->SetElementType(TYPE_IND_MOTOR);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  ElementTypeChoice();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keywordtype">void</span> TextForm::OnFromBusChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_text->SetDirection(m_choiceTextFromBus->GetSelection());</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_choiceTextToBus->SetSelection(m_choiceTextFromBus->GetSelection());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keywordtype">void</span> TextForm::OnNameChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_text->SetElementNumber(m_choiceName->GetSelection());</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  ElementNumberChoice();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">void</span> TextForm::OnTextEnter(wxCommandEvent& event) { Preview(); }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keywordtype">void</span> TextForm::OnToBusChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_text->SetDirection(m_choiceTextToBus->GetSelection());</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_choiceTextFromBus->SetSelection(m_choiceTextToBus->GetSelection());</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keywordtype">void</span> TextForm::OnUnitChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  UnitChoice();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  Preview();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keywordtype">void</span> TextForm::OnTypeChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_text->SetDataType(DATA_NAME);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_text->SetDataType(DATA_VOLTAGE);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_text->SetDataType(DATA_ANGLE);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_text->SetDataType(DATA_SC_CURRENT);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">case</span> 4: {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_text->SetDataType(DATA_SC_VOLTAGE);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">case</span> 5: {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_text->SetDataType(DATA_SC_POWER);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_text->SetDataType(DATA_NAME);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_text->SetDataType(DATA_ACTIVE_POWER);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  m_text->SetDataType(DATA_REACTIVE_POWER);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_text->SetDataType(DATA_SC_CURRENT);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">case</span> TYPE_LINE:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_text->SetDataType(DATA_NAME);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_text->SetDataType(DATA_PF_ACTIVE);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_text->SetDataType(DATA_PF_REACTIVE);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_text->SetDataType(DATA_PF_LOSSES);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">case</span> 4: {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_text->SetDataType(DATA_PF_CURRENT);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">case</span> 5: {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_text->SetDataType(DATA_SC_CURRENT);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">case</span> TYPE_LOAD:</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR:</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  m_text->SetDataType(DATA_NAME);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  m_text->SetDataType(DATA_ACTIVE_POWER);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  m_text->SetDataType(DATA_REACTIVE_POWER);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR:</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  m_text->SetDataType(DATA_NAME);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_text->SetDataType(DATA_REACTIVE_POWER);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  DataTypeChoice();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span>(m_text->GetDataType() == DATA_NAME) Preview();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="keywordtype">bool</span> TextForm::LoadChoices()</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>(m_text->GetElementType() == TYPE_NONE) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// Fill the element possible choices.</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  ElementTypeChoice();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  m_choiceName->SetSelection(m_text->GetElementNumber());</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  ElementNumberChoice();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  DataTypeChoice();</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// Select the saved choices.</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  m_choiceElement->SetSelection(0);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">case</span> DATA_VOLTAGE: {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">case</span> DATA_ANGLE: {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a>: {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</a>: {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  m_choiceTextType->SetSelection(3);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">case</span> DATA_SC_VOLTAGE: {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  m_choiceTextType->SetSelection(4);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">case</span> DATA_SC_POWER: {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  m_choiceTextType->SetSelection(5);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  m_choiceElement->SetSelection(1);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  m_choiceTextType->SetSelection(3);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  m_choiceElement->SetSelection(2);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE: {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  m_choiceTextType->SetSelection(3);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  m_choiceTextType->SetSelection(4);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  m_choiceTextType->SetSelection(5);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  m_choiceElement->SetSelection(3);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE: {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  }</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  m_choiceTextType->SetSelection(3);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  m_choiceTextType->SetSelection(4);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  }</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  m_choiceTextType->SetSelection(5);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  }</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">case</span> TYPE_LOAD: {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  m_choiceElement->SetSelection(4);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  }</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  }</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  m_choiceElement->SetSelection(5);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  m_choiceElement->SetSelection(6);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  }</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  }</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  m_choiceElement->SetSelection(7);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  }</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  m_choiceElement->SetSelection(8);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  }</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  }</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> </div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <span class="keywordflow">if</span>(m_choiceTextFromBus->IsEnabled()) m_choiceTextFromBus->SetSelection(m_text->GetDirection());</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="keywordflow">if</span>(m_choiceTextToBus->IsEnabled()) m_choiceTextToBus->SetSelection(m_text->GetDirection());</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span> </div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  m_textCtrlDecimal->SetValue(wxString::Format(<span class="stringliteral">"%d"</span>, m_text->GetDecimalPlaces()));</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  Preview();</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span> </div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> }</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> </div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="keywordtype">void</span> TextForm::ElementTypeChoice()</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> {</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  m_choiceTextType->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  m_choiceTextFromBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  m_choiceTextToBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  m_choiceTextType->Clear();</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  m_choiceTextFromBus->Clear();</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  m_choiceTextToBus->Clear();</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  m_choiceTextUnit->Clear();</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> </div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  m_choiceName->Clear();</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  wxArrayString arrayString;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetBusList().size(); i++) {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <a class="code" href="class_bus.html">Bus</a>* bus = m_allElements.GetBusList()[i];</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  arrayString.Add(bus->GetElectricalData().name);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetSyncGeneratorList().size(); i++) {</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = m_allElements.GetSyncGeneratorList()[i];</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  arrayString.Add(syncGenerator->GetElectricalData().name);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetLineList().size(); i++) {</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <a class="code" href="class_line.html">Line</a>* line = m_allElements.GetLineList()[i];</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  arrayString.Add(line->GetElectricalData().name);</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  }</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetTransformerList().size(); i++) {</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = m_allElements.GetTransformerList()[i];</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  arrayString.Add(transformer->GetElectricalData().name);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  }</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keywordflow">case</span> TYPE_LOAD: {</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetLoadList().size(); i++) {</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <a class="code" href="class_load.html">Load</a>* load = m_allElements.GetLoadList()[i];</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  arrayString.Add(load->GetElectricalData().name);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  }</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetCapacitorList().size(); i++) {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = m_allElements.GetCapacitorList()[i];</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  arrayString.Add(capacitor->GetElectricalData().name);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetInductorList().size(); i++) {</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = m_allElements.GetInductorList()[i];</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  arrayString.Add(inductor->GetElectricalData().name);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetSyncMotorList().size(); i++) {</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = m_allElements.GetSyncMotorList()[i];</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  arrayString.Add(syncMotor->GetElectricalData().name);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  }</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetIndMotorList().size(); i++) {</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = m_allElements.GetIndMotorList()[i];</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  arrayString.Add(indMotor->GetElectricalData().name);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  }</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> </div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  m_choiceName->Append(arrayString);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  m_choiceName->Enable();</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> }</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> </div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> <span class="keywordtype">void</span> TextForm::ElementNumberChoice()</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> {</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  m_choiceTextFromBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  m_choiceTextToBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  m_choiceTextFromBus->Clear();</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  m_choiceTextToBus->Clear();</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  m_choiceTextUnit->Clear();</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> </div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keywordtype">int</span> index = m_choiceName->GetSelection();</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  m_text->SetElementNumber(index);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> </div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  m_choiceTextType->Clear();</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  wxArrayString arrayString;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <a class="code" href="class_bus.html">Bus</a>* bus = m_allElements.GetBusList()[index];</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  m_text->SetElement(bus);</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> </div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  arrayString.Add(_(<span class="stringliteral">"Voltage"</span>));</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  arrayString.Add(_(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  arrayString.Add(_(<span class="stringliteral">"Fault current"</span>));</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  arrayString.Add(_(<span class="stringliteral">"Fault voltage"</span>));</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  arrayString.Add(_(<span class="stringliteral">"Short-circuit power"</span>));</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = m_allElements.GetSyncGeneratorList()[index];</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  m_text->SetElement(syncGenerator);</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> </div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  arrayString.Add(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  arrayString.Add(_(<span class="stringliteral">"Fault current"</span>));</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <a class="code" href="class_line.html">Line</a>* line = m_allElements.GetLineList()[index];</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  m_text->SetElement(line);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> </div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  arrayString.Add(_(<span class="stringliteral">"Active power flow"</span>));</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power flow"</span>));</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  arrayString.Add(_(<span class="stringliteral">"Losses"</span>));</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  arrayString.Add(_(<span class="stringliteral">"Current"</span>));</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  arrayString.Add(_(<span class="stringliteral">"Fault current"</span>));</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = m_allElements.GetTransformerList()[index];</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  m_text->SetElement(transformer);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> </div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  arrayString.Add(_(<span class="stringliteral">"Active power flow"</span>));</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power flow"</span>));</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  arrayString.Add(_(<span class="stringliteral">"Losses"</span>));</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  arrayString.Add(_(<span class="stringliteral">"Current"</span>));</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  arrayString.Add(_(<span class="stringliteral">"Fault current"</span>));</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keywordflow">case</span> TYPE_LOAD: {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <a class="code" href="class_load.html">Load</a>* load = m_allElements.GetLoadList()[index];</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  m_text->SetElement(load);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> </div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  arrayString.Add(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = m_allElements.GetCapacitorList()[index];</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  m_text->SetElement(capacitor);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> </div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = m_allElements.GetInductorList()[index];</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  m_text->SetElement(inductor);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span> </div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = m_allElements.GetSyncMotorList()[index];</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  m_text->SetElement(syncMotor);</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span> </div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  arrayString.Add(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = m_allElements.GetIndMotorList()[index];</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  m_text->SetElement(indMotor);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span> </div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  arrayString.Add(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> </div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  }</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  m_choiceTextType->Append(arrayString);</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  m_choiceTextType->Enable();</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> }</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span> </div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> <span class="keywordtype">void</span> TextForm::DataTypeChoice()</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  m_choiceTextFromBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  m_choiceTextToBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> </div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  m_choiceTextToBus->Clear();</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  m_choiceTextFromBus->Clear();</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  m_choiceTextUnit->Clear();</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> </div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  m_choiceTextUnit->Enable();</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> </div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  wxArrayString arrayString;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keywordflow">case</span> DATA_VOLTAGE:</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  <span class="keywordflow">case</span> DATA_SC_VOLTAGE: {</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  arrayString.Add(_(<span class="stringliteral">"V"</span>));</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  arrayString.Add(_(<span class="stringliteral">"kV"</span>));</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="keywordflow">case</span> DATA_ANGLE: {</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  arrayString.Add(_(<span class="stringliteral">"Degrees"</span>));</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  arrayString.Add(_(<span class="stringliteral">"Radians"</span>));</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT:</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  arrayString.Add(_(<span class="stringliteral">"A"</span>));</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  arrayString.Add(_(<span class="stringliteral">"kA"</span>));</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="keywordflow">case</span> DATA_SC_POWER: {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  arrayString.Add(_(<span class="stringliteral">"VA"</span>));</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  arrayString.Add(_(<span class="stringliteral">"kVA"</span>));</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  arrayString.Add(_(<span class="stringliteral">"MVA"</span>));</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER:</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE:</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  arrayString.Add(_(<span class="stringliteral">"W"</span>));</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  arrayString.Add(_(<span class="stringliteral">"kW"</span>));</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  arrayString.Add(_(<span class="stringliteral">"MW"</span>));</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  m_choiceTextUnit->Enable();</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER:</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  arrayString.Add(_(<span class="stringliteral">"VAr"</span>));</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  arrayString.Add(_(<span class="stringliteral">"kVAr"</span>));</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  arrayString.Add(_(<span class="stringliteral">"MVAr"</span>));</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  }</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  m_choiceTextUnit->Append(arrayString);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> </div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="keywordflow">if</span>(m_text->GetDataType() != DATA_PF_LOSSES) {</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="keyword">auto</span> it = m_allElements.GetLineList().begin();</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  std::advance(it, m_text->GetElementNumber());</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> </div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <a class="code" href="class_bus.html">Bus</a>* bus1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(line->GetParentList()[0]);</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <a class="code" href="class_bus.html">Bus</a>* bus2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(line->GetParentList()[1]);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  wxString bus1Name = bus1->GetElectricalData().name;</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  wxString bus2Name = bus2->GetElectricalData().name;</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> </div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  m_choiceTextFromBus->Append(bus1Name);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  m_choiceTextFromBus->Append(bus2Name);</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  m_choiceTextToBus->Append(bus2Name);</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  m_choiceTextToBus->Append(bus1Name);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  m_choiceTextFromBus->SetSelection(0);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  m_choiceTextToBus->SetSelection(0);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  m_choiceTextFromBus->Enable();</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  m_choiceTextToBus->Enable();</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  }</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="keywordflow">if</span>(m_text->GetDataType() != DATA_PF_LOSSES) {</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <span class="keyword">auto</span> it = m_allElements.GetTransformerList().begin();</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  std::advance(it, m_text->GetElementNumber());</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> </div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <a class="code" href="class_bus.html">Bus</a>* bus1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(transformer->GetParentList()[0]);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <a class="code" href="class_bus.html">Bus</a>* bus2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(transformer->GetParentList()[1]);</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  wxString bus1Name = bus1->GetElectricalData().name;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  wxString bus2Name = bus2->GetElectricalData().name;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> </div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  m_choiceTextFromBus->Append(bus1Name);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  m_choiceTextFromBus->Append(bus2Name);</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  m_choiceTextToBus->Append(bus2Name);</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  m_choiceTextToBus->Append(bus1Name);</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  m_choiceTextFromBus->SetSelection(0);</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  m_choiceTextToBus->SetSelection(0);</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> </div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  m_choiceTextFromBus->Enable();</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  m_choiceTextToBus->Enable();</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  }</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  }</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> }</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> </div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> <span class="keywordtype">void</span> TextForm::UnitChoice()</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> {</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <span class="keywordflow">case</span> DATA_VOLTAGE:</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">case</span> DATA_SC_VOLTAGE: {</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>);</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>);</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  }</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  <span class="keywordflow">case</span> DATA_ANGLE: {</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a>);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</a>);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  }</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT:</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>);</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  }</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="keywordflow">case</span> DATA_SC_POWER: {</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>);</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  }</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER:</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE:</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>);</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>);</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  }</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER:</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>);</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>);</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>);</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  }</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  }</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> }</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> </div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> <span class="keywordtype">void</span> TextForm::Preview()</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span> {</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keywordtype">double</span> decimalPlaces = m_text->GetDecimalPlaces();</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  <span class="keywordflow">if</span>(m_textCtrlDecimal->GetValue().ToDouble(&decimalPlaces)) m_text->SetDecimalPlaces(decimalPlaces);</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span> </div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  m_text->UpdateText(m_systemPowerBase);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span> </div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  m_textCtrlPreview->SetValue(m_text->GetText());</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span> }</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> </div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> <span class="keywordtype">bool</span> TextForm::ValidateData()</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> {</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  <span class="keywordflow">if</span>(m_choiceElement->GetSelection() == -1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  <span class="keywordflow">if</span>(m_choiceName->GetSelection() == -1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  <span class="keywordflow">if</span>(m_choiceTextType->GetSelection() == -1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <span class="keywordflow">if</span>(m_text->GetDataType() != DATA_NAME && m_choiceTextUnit->GetSelection() == -1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <span class="keywordflow">if</span>(m_text->GetElementType() == TYPE_LINE || m_text->GetElementType() == TYPE_TRANSFORMER) {</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <span class="keywordflow">if</span>(m_text->GetDataType() != DATA_PF_LOSSES && m_text->GetDataType() != DATA_NAME) {</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <span class="keywordflow">if</span>(m_choiceTextFromBus->GetSelection() == -1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  <span class="keywordflow">if</span>(m_choiceTextToBus->GetSelection() == -1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  }</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  }</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span> </div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  <span class="keywordflow">if</span>(m_choiceTextFromBus->IsEnabled() && m_choiceTextToBus->IsEnabled())</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  m_text->SetDirection(m_choiceTextFromBus->GetSelection());</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  <span class="keywordtype">double</span> decimalPlaces = m_text->GetDecimalPlaces();</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  <span class="keywordflow">if</span>(m_textCtrlDecimal->GetValue().ToDouble(&decimalPlaces)) m_text->SetDecimalPlaces(decimalPlaces);</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span> </div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  m_textToEdit->SetElementType(m_text->GetElementType());</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  m_textToEdit->SetElementNumber(m_text->GetElementNumber());</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  m_textToEdit->SetElement(m_text->GetElement());</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  m_textToEdit->SetDataType(m_text->GetDataType());</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  m_textToEdit->SetDirection(m_text->GetDirection());</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  m_textToEdit->SetUnit(m_text->GetUnit());</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  m_textToEdit->SetDecimalPlaces(decimalPlaces);</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  m_textToEdit->UpdateText(m_systemPowerBase);</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> </div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> }</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> </div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> <span class="keywordtype">void</span> TextForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span> {</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  EndModal(wxID_OK);</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  wxString errorMsg = _(<span class="stringliteral">"There are blank fields."</span>);</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, errorMsg, _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  msgDialog.ShowModal();</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  }</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> }</div><div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00065">Text.h:65</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_text_form_8h.html">TextForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> TextForm::TextForm(wxWindow* parent, <a class="code" href="class_text.html">Text</a>* text, std::vector<Element*> elementList, <span class="keywordtype">double</span> systemPowerBase)</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  : <a class="code" href="class_text_form_base.html">TextFormBase</a>(parent)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_parent = parent;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_textToEdit = text;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_allElements.GetElementsFromList(elementList);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_systemPowerBase = systemPowerBase;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_text = <span class="keyword">new</span> <a class="code" href="class_text.html">Text</a>();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_text->SetElementType(text->GetElementType());</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_text->SetElementNumber(text->GetElementNumber());</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_text->SetElement(text->GetElement());</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_text->SetDataType(text->GetDataType());</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_text->SetDirection(text->GetDirection());</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_text->SetUnit(text->GetUnit());</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_text->SetDecimalPlaces(text->GetDecimalPlaces());</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">if</span>(!LoadChoices()) {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_choiceName->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  m_choiceTextType->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_choiceTextFromBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_choiceTextToBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> TextForm::~TextForm() {}</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keywordtype">void</span> TextForm::OnElementChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">switch</span>(m_choiceElement->GetSelection()) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_text->SetElementType(TYPE_BUS);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_text->SetElementType(TYPE_SYNC_GENERATOR);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  m_text->SetElementType(TYPE_LINE);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_text->SetElementType(TYPE_TRANSFORMER);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">case</span> 4: {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  m_text->SetElementType(TYPE_LOAD);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">case</span> 5: {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  m_text->SetElementType(TYPE_CAPACITOR);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">case</span> 6: {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_text->SetElementType(TYPE_INDUCTOR);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">case</span> 7: {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_text->SetElementType(TYPE_SYNC_MOTOR);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">case</span> 8: {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_text->SetElementType(TYPE_IND_MOTOR);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  ElementTypeChoice();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="keywordtype">void</span> TextForm::OnFromBusChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_text->SetDirection(m_choiceTextFromBus->GetSelection());</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_choiceTextToBus->SetSelection(m_choiceTextFromBus->GetSelection());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keywordtype">void</span> TextForm::OnNameChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_text->SetElementNumber(m_choiceName->GetSelection());</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  ElementNumberChoice();</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">void</span> TextForm::OnTextEnter(wxCommandEvent& event) { Preview(); }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keywordtype">void</span> TextForm::OnToBusChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  m_text->SetDirection(m_choiceTextToBus->GetSelection());</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  m_choiceTextFromBus->SetSelection(m_choiceTextToBus->GetSelection());</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keywordtype">void</span> TextForm::OnUnitChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  UnitChoice();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  Preview();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keywordtype">void</span> TextForm::OnTypeChoiceSelected(wxCommandEvent& event)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_text->SetDataType(DATA_NAME);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_text->SetDataType(DATA_VOLTAGE);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_text->SetDataType(DATA_ANGLE);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_text->SetDataType(DATA_SC_CURRENT);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">case</span> 4: {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  m_text->SetDataType(DATA_SC_VOLTAGE);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">case</span> 5: {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  m_text->SetDataType(DATA_SC_POWER);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  m_text->SetDataType(DATA_NAME);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  m_text->SetDataType(DATA_ACTIVE_POWER);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  m_text->SetDataType(DATA_REACTIVE_POWER);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  m_text->SetDataType(DATA_SC_CURRENT);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">case</span> TYPE_LINE:</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  m_text->SetDataType(DATA_NAME);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  m_text->SetDataType(DATA_PF_ACTIVE);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  m_text->SetDataType(DATA_PF_REACTIVE);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  m_text->SetDataType(DATA_PF_LOSSES);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">case</span> 4: {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  m_text->SetDataType(DATA_PF_CURRENT);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">case</span> 5: {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  m_text->SetDataType(DATA_SC_CURRENT);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">case</span> TYPE_LOAD:</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR:</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  m_text->SetDataType(DATA_NAME);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  m_text->SetDataType(DATA_ACTIVE_POWER);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  m_text->SetDataType(DATA_REACTIVE_POWER);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR:</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">switch</span>(m_choiceTextType->GetSelection()) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  m_text->SetDataType(DATA_NAME);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  m_text->SetDataType(DATA_REACTIVE_POWER);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  DataTypeChoice();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span>(m_text->GetDataType() == DATA_NAME) Preview();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="keywordtype">bool</span> TextForm::LoadChoices()</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span>(m_text->GetElementType() == TYPE_NONE) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// Fill the element possible choices.</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  ElementTypeChoice();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  m_choiceName->SetSelection(m_text->GetElementNumber());</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  ElementNumberChoice();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  DataTypeChoice();</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="comment">// Select the saved choices.</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  m_choiceElement->SetSelection(0);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">case</span> DATA_VOLTAGE: {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> </div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">case</span> DATA_ANGLE: {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a>: {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</a>: {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  m_choiceTextType->SetSelection(3);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">case</span> DATA_SC_VOLTAGE: {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  m_choiceTextType->SetSelection(4);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">case</span> DATA_SC_POWER: {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  m_choiceTextType->SetSelection(5);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  m_choiceElement->SetSelection(1);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  m_choiceTextType->SetSelection(3);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  m_choiceElement->SetSelection(2);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE: {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  m_choiceTextType->SetSelection(3);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  m_choiceTextType->SetSelection(4);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  m_choiceTextType->SetSelection(5);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  }</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  m_choiceElement->SetSelection(3);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE: {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  }</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  m_choiceTextType->SetSelection(3);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  m_choiceTextType->SetSelection(4);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  }</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT: {</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  m_choiceTextType->SetSelection(5);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>: {</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>: {</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  }</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">case</span> TYPE_LOAD: {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  m_choiceElement->SetSelection(4);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  }</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  }</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  m_choiceElement->SetSelection(5);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  m_choiceElement->SetSelection(6);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  }</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  }</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  m_choiceElement->SetSelection(7);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  }</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  m_choiceElement->SetSelection(8);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  m_choiceTextType->SetSelection(0);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER: {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  m_choiceTextType->SetSelection(1);</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>: {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>: {</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>: {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER: {</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  m_choiceTextType->SetSelection(2);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">switch</span>(m_text->GetUnit()) {</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  m_choiceTextUnit->SetSelection(0);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>: {</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  m_choiceTextUnit->SetSelection(1);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>: {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  m_choiceTextUnit->SetSelection(2);</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>: {</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  m_choiceTextUnit->SetSelection(3);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  }</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  }</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> </div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <span class="keywordflow">if</span>(m_choiceTextFromBus->IsEnabled()) m_choiceTextFromBus->SetSelection(m_text->GetDirection());</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="keywordflow">if</span>(m_choiceTextToBus->IsEnabled()) m_choiceTextToBus->SetSelection(m_text->GetDirection());</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span> </div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  m_textCtrlDecimal->SetValue(wxString::Format(<span class="stringliteral">"%d"</span>, m_text->GetDecimalPlaces()));</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  Preview();</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span> </div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span> }</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> </div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="keywordtype">void</span> TextForm::ElementTypeChoice()</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span> {</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  m_choiceTextType->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  m_choiceTextFromBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  m_choiceTextToBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  m_choiceTextType->Clear();</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  m_choiceTextFromBus->Clear();</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  m_choiceTextToBus->Clear();</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  m_choiceTextUnit->Clear();</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> </div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  m_choiceName->Clear();</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  wxArrayString arrayString;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetBusList().size(); i++) {</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <a class="code" href="class_bus.html">Bus</a>* bus = m_allElements.GetBusList()[i];</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  arrayString.Add(bus->GetElectricalData().name);</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetSyncGeneratorList().size(); i++) {</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = m_allElements.GetSyncGeneratorList()[i];</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  arrayString.Add(syncGenerator->GetElectricalData().name);</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetLineList().size(); i++) {</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <a class="code" href="class_line.html">Line</a>* line = m_allElements.GetLineList()[i];</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  arrayString.Add(line->GetElectricalData().name);</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  }</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetTransformerList().size(); i++) {</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = m_allElements.GetTransformerList()[i];</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  arrayString.Add(transformer->GetElectricalData().name);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  }</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="keywordflow">case</span> TYPE_LOAD: {</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetLoadList().size(); i++) {</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <a class="code" href="class_load.html">Load</a>* load = m_allElements.GetLoadList()[i];</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  arrayString.Add(load->GetElectricalData().name);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  }</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetCapacitorList().size(); i++) {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = m_allElements.GetCapacitorList()[i];</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  arrayString.Add(capacitor->GetElectricalData().name);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetInductorList().size(); i++) {</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = m_allElements.GetInductorList()[i];</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  arrayString.Add(inductor->GetElectricalData().name);</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetSyncMotorList().size(); i++) {</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = m_allElements.GetSyncMotorList()[i];</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  arrayString.Add(syncMotor->GetElectricalData().name);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  }</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_allElements.GetIndMotorList().size(); i++) {</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = m_allElements.GetIndMotorList()[i];</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  arrayString.Add(indMotor->GetElectricalData().name);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  }</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> </div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  m_choiceName->Append(arrayString);</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  m_choiceName->Enable();</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span> }</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> </div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span> <span class="keywordtype">void</span> TextForm::ElementNumberChoice()</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> {</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  m_choiceTextFromBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  m_choiceTextToBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  m_choiceTextFromBus->Clear();</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  m_choiceTextToBus->Clear();</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  m_choiceTextUnit->Clear();</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span> </div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keywordtype">int</span> index = m_choiceName->GetSelection();</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  m_text->SetElementNumber(index);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> </div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  m_choiceTextType->Clear();</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  wxArrayString arrayString;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="keywordflow">case</span> TYPE_BUS: {</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <a class="code" href="class_bus.html">Bus</a>* bus = m_allElements.GetBusList()[index];</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  m_text->SetElement(bus);</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> </div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  arrayString.Add(_(<span class="stringliteral">"Voltage"</span>));</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  arrayString.Add(_(<span class="stringliteral">"Angle"</span>));</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  arrayString.Add(_(<span class="stringliteral">"Fault current"</span>));</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  arrayString.Add(_(<span class="stringliteral">"Fault voltage"</span>));</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  arrayString.Add(_(<span class="stringliteral">"Short-circuit power"</span>));</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">case</span> TYPE_SYNC_GENERATOR: {</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* syncGenerator = m_allElements.GetSyncGeneratorList()[index];</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  m_text->SetElement(syncGenerator);</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span> </div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  arrayString.Add(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  arrayString.Add(_(<span class="stringliteral">"Fault current"</span>));</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <a class="code" href="class_line.html">Line</a>* line = m_allElements.GetLineList()[index];</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  m_text->SetElement(line);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span> </div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  arrayString.Add(_(<span class="stringliteral">"Active power flow"</span>));</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power flow"</span>));</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  arrayString.Add(_(<span class="stringliteral">"Losses"</span>));</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  arrayString.Add(_(<span class="stringliteral">"Current"</span>));</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  arrayString.Add(_(<span class="stringliteral">"Fault current"</span>));</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = m_allElements.GetTransformerList()[index];</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  m_text->SetElement(transformer);</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span> </div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  arrayString.Add(_(<span class="stringliteral">"Active power flow"</span>));</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power flow"</span>));</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  arrayString.Add(_(<span class="stringliteral">"Losses"</span>));</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  arrayString.Add(_(<span class="stringliteral">"Current"</span>));</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  arrayString.Add(_(<span class="stringliteral">"Fault current"</span>));</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keywordflow">case</span> TYPE_LOAD: {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <a class="code" href="class_load.html">Load</a>* load = m_allElements.GetLoadList()[index];</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  m_text->SetElement(load);</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span> </div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  arrayString.Add(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordflow">case</span> TYPE_CAPACITOR: {</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* capacitor = m_allElements.GetCapacitorList()[index];</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  m_text->SetElement(capacitor);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span> </div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keywordflow">case</span> TYPE_INDUCTOR: {</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="class_inductor.html">Inductor</a>* inductor = m_allElements.GetInductorList()[index];</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  m_text->SetElement(inductor);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span> </div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">case</span> TYPE_SYNC_MOTOR: {</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* syncMotor = m_allElements.GetSyncMotorList()[index];</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  m_text->SetElement(syncMotor);</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span> </div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  arrayString.Add(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordflow">case</span> TYPE_IND_MOTOR: {</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* indMotor = m_allElements.GetIndMotorList()[index];</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  m_text->SetElement(indMotor);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span> </div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  arrayString.Add(_(<span class="stringliteral">"Name"</span>));</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  arrayString.Add(_(<span class="stringliteral">"Active power"</span>));</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  arrayString.Add(_(<span class="stringliteral">"Reactive power"</span>));</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span> </div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  }</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  m_choiceTextType->Append(arrayString);</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  m_choiceTextType->Enable();</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span> }</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span> </div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> <span class="keywordtype">void</span> TextForm::DataTypeChoice()</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> {</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  m_choiceTextFromBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  m_choiceTextToBus->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span> </div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  m_choiceTextToBus->Clear();</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  m_choiceTextFromBus->Clear();</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  m_choiceTextUnit->Clear();</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span> </div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  m_choiceTextUnit->Enable();</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span> </div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  wxArrayString arrayString;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keywordflow">case</span> DATA_VOLTAGE:</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  <span class="keywordflow">case</span> DATA_SC_VOLTAGE: {</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  arrayString.Add(_(<span class="stringliteral">"V"</span>));</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  arrayString.Add(_(<span class="stringliteral">"kV"</span>));</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="keywordflow">case</span> DATA_ANGLE: {</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  arrayString.Add(_(<span class="stringliteral">"Degrees"</span>));</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  arrayString.Add(_(<span class="stringliteral">"Radians"</span>));</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT:</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  arrayString.Add(_(<span class="stringliteral">"A"</span>));</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  arrayString.Add(_(<span class="stringliteral">"kA"</span>));</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="keywordflow">case</span> DATA_SC_POWER: {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  arrayString.Add(_(<span class="stringliteral">"VA"</span>));</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  arrayString.Add(_(<span class="stringliteral">"kVA"</span>));</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  arrayString.Add(_(<span class="stringliteral">"MVA"</span>));</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER:</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE:</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  arrayString.Add(_(<span class="stringliteral">"W"</span>));</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  arrayString.Add(_(<span class="stringliteral">"kW"</span>));</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  arrayString.Add(_(<span class="stringliteral">"MW"</span>));</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  m_choiceTextUnit->Enable();</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER:</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  arrayString.Add(_(<span class="stringliteral">"p.u."</span>));</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  arrayString.Add(_(<span class="stringliteral">"VAr"</span>));</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  arrayString.Add(_(<span class="stringliteral">"kVAr"</span>));</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  arrayString.Add(_(<span class="stringliteral">"MVAr"</span>));</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  }</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  m_choiceTextUnit->Append(arrayString);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> </div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <span class="keywordflow">switch</span>(m_text->GetElementType()) {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="keywordflow">case</span> TYPE_LINE: {</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="keywordflow">if</span>(m_text->GetDataType() != DATA_PF_LOSSES) {</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="keyword">auto</span> it = m_allElements.GetLineList().begin();</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  std::advance(it, m_text->GetElementNumber());</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  <a class="code" href="class_line.html">Line</a>* line = *it;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> </div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <a class="code" href="class_bus.html">Bus</a>* bus1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(line->GetParentList()[0]);</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <a class="code" href="class_bus.html">Bus</a>* bus2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(line->GetParentList()[1]);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  wxString bus1Name = bus1->GetElectricalData().name;</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  wxString bus2Name = bus2->GetElectricalData().name;</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> </div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  m_choiceTextFromBus->Append(bus1Name);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  m_choiceTextFromBus->Append(bus2Name);</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  m_choiceTextToBus->Append(bus2Name);</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  m_choiceTextToBus->Append(bus1Name);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  m_choiceTextFromBus->SetSelection(0);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  m_choiceTextToBus->SetSelection(0);</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  m_choiceTextFromBus->Enable();</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  m_choiceTextToBus->Enable();</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  }</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <span class="keywordflow">case</span> TYPE_TRANSFORMER: {</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <span class="keywordflow">if</span>(m_text->GetDataType() != DATA_PF_LOSSES) {</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <span class="keyword">auto</span> it = m_allElements.GetTransformerList().begin();</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  std::advance(it, m_text->GetElementNumber());</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <a class="code" href="class_transformer.html">Transformer</a>* transformer = *it;</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> </div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <a class="code" href="class_bus.html">Bus</a>* bus1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(transformer->GetParentList()[0]);</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <a class="code" href="class_bus.html">Bus</a>* bus2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(transformer->GetParentList()[1]);</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  wxString bus1Name = bus1->GetElectricalData().name;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  wxString bus2Name = bus2->GetElectricalData().name;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> </div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  m_choiceTextFromBus->Append(bus1Name);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  m_choiceTextFromBus->Append(bus2Name);</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  m_choiceTextToBus->Append(bus2Name);</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  m_choiceTextToBus->Append(bus1Name);</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  m_choiceTextFromBus->SetSelection(0);</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  m_choiceTextToBus->SetSelection(0);</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> </div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  m_choiceTextFromBus->Enable();</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  m_choiceTextToBus->Enable();</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  }</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  }</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> }</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> </div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> <span class="keywordtype">void</span> TextForm::UnitChoice()</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> {</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <span class="keywordflow">switch</span>(m_text->GetDataType()) {</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  <span class="keywordflow">case</span> DATA_NAME: {</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  m_choiceTextUnit->Enable(<span class="keyword">false</span>);</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <span class="keywordflow">case</span> DATA_VOLTAGE:</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">case</span> DATA_SC_VOLTAGE: {</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>);</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>);</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  }</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  <span class="keywordflow">case</span> DATA_ANGLE: {</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a>);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</a>);</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  }</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="keywordflow">case</span> DATA_SC_CURRENT:</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordflow">case</span> DATA_PF_CURRENT: {</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a>);</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a>);</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  }</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="keywordflow">case</span> DATA_SC_POWER: {</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>);</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>);</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  }</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="keywordflow">case</span> DATA_ACTIVE_POWER:</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <span class="keywordflow">case</span> DATA_PF_ACTIVE:</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="keywordflow">case</span> DATA_PF_LOSSES: {</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a>);</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a>);</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a>);</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  }</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  <span class="keywordflow">case</span> DATA_REACTIVE_POWER:</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="keywordflow">case</span> DATA_PF_REACTIVE: {</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <span class="keywordflow">switch</span>(m_choiceTextUnit->GetSelection()) {</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>);</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a>);</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a>);</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  m_text->SetUnit(<a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a>);</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  }</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  }</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> }</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> </div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> <span class="keywordtype">void</span> TextForm::Preview()</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span> {</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keywordtype">double</span> decimalPlaces = m_text->GetDecimalPlaces();</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  <span class="keywordflow">if</span>(m_textCtrlDecimal->GetValue().ToDouble(&decimalPlaces)) m_text->SetDecimalPlaces(decimalPlaces);</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span> </div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  m_text->UpdateText(m_systemPowerBase);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span> </div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  m_textCtrlPreview->SetValue(m_text->GetText());</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span> }</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> </div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> <span class="keywordtype">bool</span> TextForm::ValidateData()</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> {</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  <span class="keywordflow">if</span>(m_choiceElement->GetSelection() == -1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  <span class="keywordflow">if</span>(m_choiceName->GetSelection() == -1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  <span class="keywordflow">if</span>(m_choiceTextType->GetSelection() == -1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <span class="keywordflow">if</span>(m_text->GetDataType() != DATA_NAME && m_choiceTextUnit->GetSelection() == -1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <span class="keywordflow">if</span>(m_text->GetElementType() == TYPE_LINE || m_text->GetElementType() == TYPE_TRANSFORMER) {</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  <span class="keywordflow">if</span>(m_text->GetDataType() != DATA_PF_LOSSES && m_text->GetDataType() != DATA_NAME) {</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <span class="keywordflow">if</span>(m_choiceTextFromBus->GetSelection() == -1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  <span class="keywordflow">if</span>(m_choiceTextToBus->GetSelection() == -1) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  }</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  }</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span> </div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  <span class="keywordflow">if</span>(m_choiceTextFromBus->IsEnabled() && m_choiceTextToBus->IsEnabled())</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  m_text->SetDirection(m_choiceTextFromBus->GetSelection());</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  <span class="keywordtype">double</span> decimalPlaces = m_text->GetDecimalPlaces();</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  <span class="keywordflow">if</span>(m_textCtrlDecimal->GetValue().ToDouble(&decimalPlaces)) m_text->SetDecimalPlaces(decimalPlaces);</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span> </div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  m_textToEdit->SetElementType(m_text->GetElementType());</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  m_textToEdit->SetElementNumber(m_text->GetElementNumber());</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  m_textToEdit->SetElement(m_text->GetElement());</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  m_textToEdit->SetDataType(m_text->GetDataType());</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  m_textToEdit->SetDirection(m_text->GetDirection());</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  m_textToEdit->SetUnit(m_text->GetUnit());</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  m_textToEdit->SetDecimalPlaces(decimalPlaces);</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  m_textToEdit->UpdateText(m_systemPowerBase);</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> </div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> }</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> </div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> <span class="keywordtype">void</span> TextForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span> {</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  EndModal(wxID_OK);</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  wxString errorMsg = _(<span class="stringliteral">"There are blank fields."</span>);</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, errorMsg, _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  msgDialog.ShowModal();</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>  }</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> }</div><div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdoc">Element that shows power element informations in workspace. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00072">Text.h:72</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2751885c0f17f3c2e4e8ea341f62dc9c">UNIT_A</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00032">PowerElement.h:32</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00030">PowerElement.h:30</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa2035461eacf2ebcf3274bc419ef327d3">UNIT_DEGREE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00047">PowerElement.h:47</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0e44ebcb07116662322ee536abc0e990">UNIT_MW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00036">PowerElement.h:36</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00031">PowerElement.h:31</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa6576f8a845540ae6439ec850ab4e7a6b">UNIT_kW</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00035">PowerElement.h:35</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00039">PowerElement.h:39</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa81c9e03cb1e74d13cd9a1c928a38b392">UNIT_kA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00033">PowerElement.h:33</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaae578be70360e9692f38d175c5f709871">UNIT_MVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00042">PowerElement.h:42</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa13d53193dc339f40ca63ace836fc366d">UNIT_kVAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00041">PowerElement.h:41</a></div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> -<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00033">IndMotor.h:33</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> +<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdoc">Induction motor power element. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00040">IndMotor.h:40</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa7f67491156c61b945c7a28a12d13740c">UNIT_VAr</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00040">PowerElement.h:40</a></div></div> <div class="ttc" id="_text_form_8h_html"><div class="ttname"><a href="_text_form_8h.html">TextForm.h</a></div></div> -<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00031">Capacitor.h:31</a></div></div> -<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00031">Inductor.h:31</a></div></div> +<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdoc">Shunt capactior power element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00038">Capacitor.h:38</a></div></div> +<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdoc">Inductor shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00038">Inductor.h:38</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00037">PowerElement.h:37</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa613165a3bff40fee33d02e7b730e3bb5">UNIT_RADIAN</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00048">PowerElement.h:48</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00038">PowerElement.h:38</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> <div class="ttc" id="class_text_form_base_html"><div class="ttname"><a href="class_text_form_base.html">TextFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00714">ElementForm.h:714</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa1b7fe4f8de747aebfcbe3df2ec78279c">UNIT_W</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00034">PowerElement.h:34</a></div></div> </div><!-- fragment --></div><!-- contents --> diff --git a/docs/doxygen/html/_text_form_8h.html b/docs/doxygen/html/_text_form_8h.html index 3914266..b198318 100644 --- a/docs/doxygen/html/_text_form_8h.html +++ b/docs/doxygen/html/_text_form_8h.html @@ -91,7 +91,7 @@ $(document).ready(function(){initNavTree('_text_form_8h.html','');}); </div><!--header--> <div class="contents"> <div class="textblock"><code>#include "ElementForm.h"</code><br /> -<code>#include "Text.h"</code><br /> +<code>#include "<a class="el" href="_text_8h_source.html">Text.h</a>"</code><br /> <code>#include "<a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>"</code><br /> </div> <p><a href="_text_form_8h_source.html">Go to the source code of this file.</a></p> diff --git a/docs/doxygen/html/_text_form_8h_source.html b/docs/doxygen/html/_text_form_8h_source.html index 140e411..fa0168c 100644 --- a/docs/doxygen/html/_text_form_8h_source.html +++ b/docs/doxygen/html/_text_form_8h_source.html @@ -88,10 +88,11 @@ $(document).ready(function(){initNavTree('_text_form_8h_source.html','');}); <div class="title">TextForm.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_text_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef TEXTFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define TEXTFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Text.h"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_text_form.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_text_form.html">TextForm</a> : <span class="keyword">public</span> <a class="code" href="class_text_form_base.html">TextFormBase</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_text_form.html">TextForm</a>(wxWindow* parent, <a class="code" href="class_text.html">Text</a>* text, std::vector<Element*> elementList, <span class="keywordtype">double</span> systemPowerBase = 100e6);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_text_form.html">TextForm</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> LoadChoices();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ElementTypeChoice();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ElementNumberChoice();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DataTypeChoice();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UnitChoice();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Preview();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnUnitChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnElementChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFromBusChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnNameChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTextEnter(wxCommandEvent& event);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnToBusChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTypeChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_text.html">Text</a>* m_text = NULL;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="class_text.html">Text</a>* m_textToEdit = NULL;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="class_electric_calculation.html">ElectricCalculation</a> m_allElements;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">double</span> m_systemPowerBase;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#endif // TEXTFORM_H</span></div><div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00065">Text.h:65</a></div></div> -<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div></div> +<a href="_text_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef TEXTFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define TEXTFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_text_8h.html">Text.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="_electric_calculation_8h.html">ElectricCalculation.h</a>"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_text_form.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_text_form.html">TextForm</a> : <span class="keyword">public</span> <a class="code" href="class_text_form_base.html">TextFormBase</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_text_form.html">TextForm</a>(wxWindow* parent, <a class="code" href="class_text.html">Text</a>* text, std::vector<Element*> elementList, <span class="keywordtype">double</span> systemPowerBase = 100e6);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_text_form.html">TextForm</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> LoadChoices();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ElementTypeChoice();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> ElementNumberChoice();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> DataTypeChoice();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UnitChoice();</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Preview();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnUnitChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnElementChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnFromBusChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnNameChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTextEnter(wxCommandEvent& event);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnToBusChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTypeChoiceSelected(wxCommandEvent& event);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <a class="code" href="class_text.html">Text</a>* m_text = NULL;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="class_text.html">Text</a>* m_textToEdit = NULL;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="class_electric_calculation.html">ElectricCalculation</a> m_allElements;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">double</span> m_systemPowerBase;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> };</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#endif // TEXTFORM_H</span></div><div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdoc">Element that shows power element informations in workspace. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00072">Text.h:72</a></div></div> +<div class="ttc" id="_electric_calculation_8h_html"><div class="ttname"><a href="_electric_calculation_8h.html">ElectricCalculation.h</a></div></div> <div class="ttc" id="class_text_form_html"><div class="ttname"><a href="class_text_form.html">TextForm</a></div><div class="ttdoc">Form to edit the text graphical data. </div><div class="ttdef"><b>Definition:</b> <a href="_text_form_8h_source.html#l00032">TextForm.h:32</a></div></div> -<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> +<div class="ttc" id="_text_8h_html"><div class="ttname"><a href="_text_8h.html">Text.h</a></div></div> +<div class="ttc" id="class_electric_calculation_html"><div class="ttname"><a href="class_electric_calculation.html">ElectricCalculation</a></div><div class="ttdoc">Base class of electric calculations, with general methods. </div><div class="ttdef"><b>Definition:</b> <a href="_electric_calculation_8h_source.html#l00066">ElectricCalculation.h:66</a></div></div> <div class="ttc" id="class_text_form_base_html"><div class="ttname"><a href="class_text_form_base.html">TextFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00714">ElementForm.h:714</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_transfer_function_8cpp_source.html b/docs/doxygen/html/_transfer_function_8cpp_source.html index 6de1a4b..ea4db24 100644 --- a/docs/doxygen/html/_transfer_function_8cpp_source.html +++ b/docs/doxygen/html/_transfer_function_8cpp_source.html @@ -88,17 +88,20 @@ $(document).ready(function(){initNavTree('_transfer_function_8cpp_source.html',' <div class="title">TransferFunction.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "TransferFunction.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_transfer_function_form_8h.html">TransferFunctionForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> TransferFunction::TransferFunction(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="comment">// Superscript unicode numbers</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_supNumber[0] = L<span class="stringliteral">'\u2070'</span>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_supNumber[1] = L<span class="stringliteral">'\u00B9'</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_supNumber[2] = L<span class="stringliteral">'\u00B2'</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_supNumber[3] = L<span class="stringliteral">'\u00B3'</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_supNumber[4] = L<span class="stringliteral">'\u2074'</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_supNumber[5] = L<span class="stringliteral">'\u2075'</span>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_supNumber[6] = L<span class="stringliteral">'\u2076'</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_supNumber[7] = L<span class="stringliteral">'\u2077'</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_supNumber[8] = L<span class="stringliteral">'\u2078'</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_supNumber[9] = L<span class="stringliteral">'\u2079'</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_numerator.clear();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_numerator.push_back(1);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_denominator.clear();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_denominator.push_back(1);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_denominator.push_back(1);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  UpdateTFText();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_node.html">Node</a>* node1 = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-m_width / 2, 0), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  node1->StartMove(m_position);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_node.html">Node</a>* node2 = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(m_width / 2, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  node2->SetAngle(180.0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  node2->StartMove(m_position);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_nodeList.push_back(node1);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_nodeList.push_back(node2);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> TransferFunction::~TransferFunction() {}</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e"> 52</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e">TransferFunction::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword"></span>{</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  glLineWidth(1.0);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  DrawRectangle(m_position, m_width + borderSize, m_height + borderSize);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector<wxPoint2DDouble> linePts;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  linePts.push_back(wxPoint2DDouble(m_position.m_x - m_width / 2 + 5 + m_borderSize, m_position.m_y));</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  linePts.push_back(wxPoint2DDouble(m_position.m_x + m_width / 2 - 5 - m_borderSize, m_position.m_y));</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  DrawLine(linePts);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  DrawNodes();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_glStringNum->bind();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_glStringNum->render(m_position.m_x, m_position.m_y - m_height / 4);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_glStringDen->bind();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_glStringDen->render(m_position.m_x, m_position.m_y + m_height / 4);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">void</span> TransferFunction::SetText(wxString numerator, wxString denominator)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  wxScreenDC dc;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(m_glStringNum) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">delete</span> m_glStringNum;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_glStringNum = NULL;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_glStringNum = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(numerator);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_glStringNum->setFont(font);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_glStringNum->consolidate(&dc);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>(m_glStringDen) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">delete</span> m_glStringDen;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_glStringDen = NULL;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_glStringDen = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(denominator);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  m_glStringDen->setFont(font);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_glStringDen->consolidate(&dc);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">double</span> nWidth = m_glStringNum->getWidth() + 5 + m_borderSize;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">double</span> dWidth = m_glStringDen->getWidth() + 5 + m_borderSize;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_width = nWidth > dWidth ? nWidth : dWidth;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_height = m_glStringNum->getheight() + m_glStringDen->getheight() + 2 * m_borderSize;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  SetPosition(m_position); <span class="comment">// Update rect properly.</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> wxString TransferFunction::GetSuperscriptNumber(<span class="keywordtype">int</span> number)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  wxString strNumber = wxString::Format(<span class="stringliteral">"%d"</span>, number);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  wxString superscriptStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)strNumber.length(); ++i) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  wxString digitStr = strNumber[i];</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordtype">long</span> digit = 0;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  digitStr.ToLong(&digit);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  superscriptStr += wxString(m_supNumber[digit]);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> superscriptStr;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keywordtype">void</span> TransferFunction::GetTFString(wxString& numerator, wxString& denominator)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  numerator = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  denominator = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordtype">int</span> index = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_numerator.size()) - 1;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_numerator.begin(), itEnd = m_numerator.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordtype">double</span> value = *it;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>(value != 0.0) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  wxString signal;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span>(index == static_cast<int>(m_numerator.size()) - 1) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span>(value >= 0.0)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  signal += <span class="stringliteral">""</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  signal += <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(value >= 0.0)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  signal += <span class="stringliteral">"+ "</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  signal += <span class="stringliteral">"- "</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(index == 0) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  numerator += signal + StringFromDouble(std::abs(value), 0);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(index == 1) {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span>(value == 1.0) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  numerator += signal + <span class="stringliteral">"s"</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  numerator += signal + StringFromDouble(std::abs(value), 0) + <span class="stringliteral">"s"</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span>(value == 1.0) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  numerator += signal + <span class="stringliteral">"s"</span> + GetSuperscriptNumber(index);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  numerator += signal + StringFromDouble(std::abs(value), 0) + <span class="stringliteral">"s"</span> + GetSuperscriptNumber(index);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  numerator += <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  --index;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  index = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_denominator.size()) - 1;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_denominator.begin(), itEnd = m_denominator.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordtype">double</span> value = *it;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(value != 0.0) {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  wxString signal;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span>(index == static_cast<int>(m_denominator.size()) - 1) {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span>(value >= 0.0)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  signal += <span class="stringliteral">""</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  signal += <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span>(value >= 0.0)</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  signal += <span class="stringliteral">"+ "</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  signal += <span class="stringliteral">"- "</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span>(index == 0) {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  denominator += signal + StringFromDouble(std::abs(value), 0);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(index == 1) {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span>(value == 1.0) {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  denominator += signal + <span class="stringliteral">"s"</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  denominator += signal + StringFromDouble(std::abs(value), 0) + <span class="stringliteral">"s"</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span>(value == 1.0) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  denominator += signal + <span class="stringliteral">"s"</span> + GetSuperscriptNumber(index);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  denominator += signal + StringFromDouble(std::abs(value), 0) + <span class="stringliteral">"s"</span> + GetSuperscriptNumber(index);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  denominator += <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  --index;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keywordtype">void</span> TransferFunction::UpdateTFText()</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  wxString num, den;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  GetTFString(num, den);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  SetText(num, den);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span>(m_nodeList.size() == 2) {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="class_transfer_function.html#afe15de93ab4f93032560a6139091ef10"> 226</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transfer_function.html#afe15de93ab4f93032560a6139091ef10">TransferFunction::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="class_transfer_function_form.html">TransferFunctionForm</a>* tfForm = <span class="keyword">new</span> <a class="code" href="class_transfer_function_form.html">TransferFunctionForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">if</span>(tfForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  tfForm->Destroy();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  tfForm->Destroy();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="class_transfer_function.html#ae145b86db1450a19a3ed32084ee60423"> 237</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transfer_function.html#ae145b86db1450a19a3ed32084ee60423">TransferFunction::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  m_angle += 90.0;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  m_angle -= 90.0;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  m_angle = 0.0;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_angle = 270.0;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="keywordtype">void</span> TransferFunction::CalculateSpaceState(<span class="keywordtype">int</span> maxIteration, <span class="keywordtype">double</span> error)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  m_maxIteration = maxIteration;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  m_error = error;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordtype">int</span> order = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_denominator.size());</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  std::vector<double> denominator = m_denominator;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  std::vector<double> numerator;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordtype">int</span> k = order;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordtype">int</span> numIndex = i - (order - <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_numerator.size()));</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">if</span>(numIndex < 0)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  numerator.push_back(0.0);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  numerator.push_back(m_numerator[numIndex]);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  k--;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="struct_transfer_function_1_1_space_state.html">SpaceState</a> ss;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (order - 1); i++) {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  std::vector<double> lineA;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (order - 1); j++) {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">if</span>(j == i + 1)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  lineA.push_back(1.0);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  lineA.push_back(0.0);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  ss.A.push_back(lineA);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  ss.B.push_back(0.0);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  ss.C.push_back(0.0);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order - 1; i++) {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  ss.A[order - 2][i] = -(denominator[order - 1 - i] / denominator[0]);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  ss.C[i] = (numerator[order - 1 - i] - denominator[order - 1 - i] * numerator[0]) / denominator[0];</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  ss.B[order - 2] = 1.0;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  ss.D = numerator[0];</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  m_ss = ss;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="comment">// Reset state</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  m_x.clear();</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  m_dx.clear();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_denominator.size(); ++i) {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  m_x.push_back(0.0);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  m_dx.push_back(0.0);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> </div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="keywordtype">bool</span> TransferFunction::Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordtype">int</span> order = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_ss.A.size());</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  std::vector<double> x;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  std::vector<double> oldx;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  std::vector<double> dx;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  std::vector<double> olddx;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  x.push_back(m_x[i]);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  oldx.push_back(m_x[i]);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  dx.push_back(m_dx[i]);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  olddx.push_back(m_dx[i]);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordtype">bool</span> exit = <span class="keyword">false</span>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordtype">int</span> iter = 0;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">while</span>(!exit) {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordtype">double</span> xError = 0.0;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordtype">double</span> dxError = 0.0;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="comment">// Trapezoidal method</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  x[i] = m_x[i] + 0.5 * timeStep * (m_dx[i] + dx[i]);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">if</span>(std::abs(x[i] - oldx[i]) > xError) xError = std::abs(x[i] - oldx[i]);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  oldx[i] = x[i];</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="comment">// x' = Ax + Bu</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  dx[i] = 0.0;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < order; j++) dx[i] += m_ss.A[i][j] * x[j];</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  dx[i] += m_ss.B[i] * input;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">if</span>(std::abs(dx[i] - olddx[i]) > dxError) dxError = std::abs(dx[i] - olddx[i]);</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  olddx[i] = dx[i];</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">if</span>(std::max(xError, dxError) < m_error) exit = <span class="keyword">true</span>;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  iter++;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">if</span>(iter >= m_maxIteration) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  m_output = 0.0;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  m_output += m_ss.C[i] * x[i];</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  m_x[i] = x[i];</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  m_dx[i] = dx[i];</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> </div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  m_output += m_ss.D * input;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862"> 376</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862">TransferFunction::GetCopy</a>()</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span> {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* copy = <span class="keyword">new</span> <a class="code" href="class_transfer_function.html">TransferFunction</a>(m_elementID);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  m_glStringNum = NULL;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  m_glStringDen = NULL;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  UpdateTFText();</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_transfer_function_8h.html">TransferFunction.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_transfer_function_form_8h.html">TransferFunctionForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> TransferFunction::TransferFunction(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) : <a class="code" href="class_control_element.html">ControlElement</a>(id)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="comment">// Superscript unicode numbers</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_supNumber[0] = L<span class="stringliteral">'\u2070'</span>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_supNumber[1] = L<span class="stringliteral">'\u00B9'</span>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_supNumber[2] = L<span class="stringliteral">'\u00B2'</span>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_supNumber[3] = L<span class="stringliteral">'\u00B3'</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_supNumber[4] = L<span class="stringliteral">'\u2074'</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_supNumber[5] = L<span class="stringliteral">'\u2075'</span>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_supNumber[6] = L<span class="stringliteral">'\u2076'</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_supNumber[7] = L<span class="stringliteral">'\u2077'</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_supNumber[8] = L<span class="stringliteral">'\u2078'</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_supNumber[9] = L<span class="stringliteral">'\u2079'</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_numerator.clear();</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_numerator.push_back(1);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  m_denominator.clear();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  m_denominator.push_back(1);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  m_denominator.push_back(1);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  UpdateTFText();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_node.html">Node</a>* node1 = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(-m_width / 2, 0), Node::NODE_IN, m_borderSize);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  node1->StartMove(m_position);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="class_node.html">Node</a>* node2 = <span class="keyword">new</span> <a class="code" href="class_node.html">Node</a>(m_position + wxPoint2DDouble(m_width / 2, 0), Node::NODE_OUT, m_borderSize);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  node2->SetAngle(180.0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  node2->StartMove(m_position);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_nodeList.push_back(node1);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_nodeList.push_back(node2);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> TransferFunction::~TransferFunction() {}</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e"> 52</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e">TransferFunction::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword"></span>{</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  glLineWidth(1.0);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordtype">double</span> borderSize = (m_borderSize * 2.0 + 1.0) / scale;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  DrawRectangle(m_position, m_width + borderSize, m_height + borderSize);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  DrawRectangle(m_position, m_width, m_height);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  DrawRectangle(m_position, m_width, m_height, GL_LINE_LOOP);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector<wxPoint2DDouble> linePts;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  linePts.push_back(wxPoint2DDouble(m_position.m_x - m_width / 2 + 5 + m_borderSize, m_position.m_y));</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  linePts.push_back(wxPoint2DDouble(m_position.m_x + m_width / 2 - 5 - m_borderSize, m_position.m_y));</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  DrawLine(linePts);</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  DrawNodes();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  glEnable(GL_TEXTURE_2D);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  glColor4d(0.0, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_glStringNum->bind();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  m_glStringNum->render(m_position.m_x, m_position.m_y - m_height / 4);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_glStringDen->bind();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  m_glStringDen->render(m_position.m_x, m_position.m_y + m_height / 4);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keywordtype">void</span> TransferFunction::SetText(wxString numerator, wxString denominator)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  wxFont font(m_fontSize, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  wxScreenDC dc;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(m_glStringNum) {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">delete</span> m_glStringNum;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  m_glStringNum = NULL;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  m_glStringNum = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(numerator);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_glStringNum->setFont(font);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_glStringNum->consolidate(&dc);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>(m_glStringDen) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">delete</span> m_glStringDen;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  m_glStringDen = NULL;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  m_glStringDen = <span class="keyword">new</span> <a class="code" href="classwx_g_l_string.html">wxGLString</a>(denominator);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  m_glStringDen->setFont(font);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  m_glStringDen->consolidate(&dc);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">double</span> nWidth = m_glStringNum->getWidth() + 5 + m_borderSize;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordtype">double</span> dWidth = m_glStringDen->getWidth() + 5 + m_borderSize;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  m_width = nWidth > dWidth ? nWidth : dWidth;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_height = m_glStringNum->getheight() + m_glStringDen->getheight() + 2 * m_borderSize;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  SetPosition(m_position); <span class="comment">// Update rect properly.</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> wxString TransferFunction::GetSuperscriptNumber(<span class="keywordtype">int</span> number)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  wxString strNumber = wxString::Format(<span class="stringliteral">"%d"</span>, number);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  wxString superscriptStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)strNumber.length(); ++i) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  wxString digitStr = strNumber[i];</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordtype">long</span> digit = 0;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  digitStr.ToLong(&digit);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  superscriptStr += wxString(m_supNumber[digit]);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> superscriptStr;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="keywordtype">void</span> TransferFunction::GetTFString(wxString& numerator, wxString& denominator)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  numerator = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  denominator = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordtype">int</span> index = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_numerator.size()) - 1;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_numerator.begin(), itEnd = m_numerator.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordtype">double</span> value = *it;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>(value != 0.0) {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  wxString signal;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span>(index == static_cast<int>(m_numerator.size()) - 1) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span>(value >= 0.0)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  signal += <span class="stringliteral">""</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  signal += <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(value >= 0.0)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  signal += <span class="stringliteral">"+ "</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  signal += <span class="stringliteral">"- "</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(index == 0) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  numerator += signal + StringFromDouble(std::abs(value), 0);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(index == 1) {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span>(value == 1.0) {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  numerator += signal + <span class="stringliteral">"s"</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  numerator += signal + StringFromDouble(std::abs(value), 0) + <span class="stringliteral">"s"</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span>(value == 1.0) {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  numerator += signal + <span class="stringliteral">"s"</span> + GetSuperscriptNumber(index);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  numerator += signal + StringFromDouble(std::abs(value), 0) + <span class="stringliteral">"s"</span> + GetSuperscriptNumber(index);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  numerator += <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  --index;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  index = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_denominator.size()) - 1;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_denominator.begin(), itEnd = m_denominator.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordtype">double</span> value = *it;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(value != 0.0) {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  wxString signal;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span>(index == static_cast<int>(m_denominator.size()) - 1) {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span>(value >= 0.0)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  signal += <span class="stringliteral">""</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  signal += <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">if</span>(value >= 0.0)</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  signal += <span class="stringliteral">"+ "</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  signal += <span class="stringliteral">"- "</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span>(index == 0) {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  denominator += signal + StringFromDouble(std::abs(value), 0);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(index == 1) {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span>(value == 1.0) {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  denominator += signal + <span class="stringliteral">"s"</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  denominator += signal + StringFromDouble(std::abs(value), 0) + <span class="stringliteral">"s"</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span>(value == 1.0) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  denominator += signal + <span class="stringliteral">"s"</span> + GetSuperscriptNumber(index);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  denominator += signal + StringFromDouble(std::abs(value), 0) + <span class="stringliteral">"s"</span> + GetSuperscriptNumber(index);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  denominator += <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  --index;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keywordtype">void</span> TransferFunction::UpdateTFText()</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  wxString num, den;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  GetTFString(num, den);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  SetText(num, den);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span>(m_nodeList.size() == 2) {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="class_transfer_function.html#afe15de93ab4f93032560a6139091ef10"> 226</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transfer_function.html#afe15de93ab4f93032560a6139091ef10">TransferFunction::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="class_transfer_function_form.html">TransferFunctionForm</a>* tfForm = <span class="keyword">new</span> <a class="code" href="class_transfer_function_form.html">TransferFunctionForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">if</span>(tfForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  tfForm->Destroy();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  tfForm->Destroy();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="class_transfer_function.html#ae145b86db1450a19a3ed32084ee60423"> 237</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transfer_function.html#ae145b86db1450a19a3ed32084ee60423">TransferFunction::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">if</span>(clockwise)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  m_angle += 90.0;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  m_angle -= 90.0;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">if</span>(m_angle >= 360.0)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  m_angle = 0.0;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle < 0)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  m_angle = 270.0;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="keywordflow">if</span>(m_angle == 0.0) {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 90.0) {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 180.0) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(m_width / 2, 0));</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(-m_width / 2, 0));</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_angle == 270.0) {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  m_nodeList[0]->SetPosition(m_position + wxPoint2DDouble(0, m_height / 2));</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  m_nodeList[1]->SetPosition(m_position + wxPoint2DDouble(0, -m_height / 2));</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_nodeList.begin(), itEnd = m_nodeList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="class_node.html">Node</a>* node = *it;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  node->Rotate(clockwise);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a"> 268</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a">TransferFunction::CalculateSpaceState</a>(<span class="keywordtype">int</span> maxIteration, <span class="keywordtype">double</span> error)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  m_maxIteration = maxIteration;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  m_error = error;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordtype">int</span> order = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_denominator.size());</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  std::vector<double> denominator = m_denominator;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  std::vector<double> numerator;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">//[Ref.] http://lpsa.swarthmore.edu/Representations/SysRepTransformations/TF2SS.html</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordtype">int</span> k = order;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordtype">int</span> numIndex = i - (order - <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_numerator.size()));</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">if</span>(numIndex < 0)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  numerator.push_back(0.0);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  numerator.push_back(m_numerator[numIndex]);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  k--;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <a class="code" href="struct_transfer_function_1_1_space_state.html">SpaceState</a> ss;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (order - 1); i++) {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  std::vector<double> lineA;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (order - 1); j++) {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">if</span>(j == i + 1)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  lineA.push_back(1.0);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  lineA.push_back(0.0);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  ss.A.push_back(lineA);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  ss.B.push_back(0.0);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  ss.C.push_back(0.0);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order - 1; i++) {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  ss.A[order - 2][i] = -(denominator[order - 1 - i] / denominator[0]);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  ss.C[i] = (numerator[order - 1 - i] - denominator[order - 1 - i] * numerator[0]) / denominator[0];</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  ss.B[order - 2] = 1.0;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  ss.D = numerator[0];</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  m_ss = ss;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="comment">// Reset state</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  m_x.clear();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  m_dx.clear();</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < m_denominator.size(); ++i) {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  m_x.push_back(0.0);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  m_dx.push_back(0.0);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span> </div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="class_transfer_function.html#ab23ed101f7d4e953e4df0d4d480d9798"> 320</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transfer_function.html#ab23ed101f7d4e953e4df0d4d480d9798">TransferFunction::Solve</a>(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep)</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span> {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordtype">int</span> order = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(m_ss.A.size());</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  std::vector<double> x;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  std::vector<double> oldx;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  std::vector<double> dx;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  std::vector<double> olddx;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  x.push_back(m_x[i]);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  oldx.push_back(m_x[i]);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  dx.push_back(m_dx[i]);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  olddx.push_back(m_dx[i]);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="keywordtype">bool</span> exit = <span class="keyword">false</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordtype">int</span> iter = 0;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">while</span>(!exit) {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordtype">double</span> xError = 0.0;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordtype">double</span> dxError = 0.0;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="comment">// Trapezoidal method</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  x[i] = m_x[i] + 0.5 * timeStep * (m_dx[i] + dx[i]);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">if</span>(std::abs(x[i] - oldx[i]) > xError) xError = std::abs(x[i] - oldx[i]);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  oldx[i] = x[i];</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="comment">// x' = Ax + Bu</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  dx[i] = 0.0;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < order; j++) dx[i] += m_ss.A[i][j] * x[j];</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  dx[i] += m_ss.B[i] * input;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="keywordflow">if</span>(std::abs(dx[i] - olddx[i]) > dxError) dxError = std::abs(dx[i] - olddx[i]);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  olddx[i] = dx[i];</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">if</span>(std::max(xError, dxError) < m_error) exit = <span class="keyword">true</span>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  iter++;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span>(iter >= m_maxIteration) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  m_output = 0.0;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < order; i++) {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  m_output += m_ss.C[i] * x[i];</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  m_x[i] = x[i];</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  m_dx[i] = dx[i];</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  m_output += m_ss.D * input;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862"> 377</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862">TransferFunction::GetCopy</a>()</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* copy = <span class="keyword">new</span> <a class="code" href="class_transfer_function.html">TransferFunction</a>(m_elementID);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  m_glStringNum = NULL;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  m_glStringDen = NULL;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  UpdateTFText();</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> }</div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_transfer_function_html_afe15de93ab4f93032560a6139091ef10"><div class="ttname"><a href="class_transfer_function.html#afe15de93ab4f93032560a6139091ef10">TransferFunction::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00226">TransferFunction.cpp:226</a></div></div> <div class="ttc" id="class_node_html"><div class="ttname"><a href="class_node.html">Node</a></div><div class="ttdoc">Node of a control element. This class manages the user interaction with the connection and control el...</div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00030">ControlElement.h:30</a></div></div> -<div class="ttc" id="class_transfer_function_html_a3312f7e9499aa99742093d3b60547862"><div class="ttname"><a href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862">TransferFunction::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00376">TransferFunction.cpp:376</a></div></div> +<div class="ttc" id="class_transfer_function_html_a3312f7e9499aa99742093d3b60547862"><div class="ttname"><a href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862">TransferFunction::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00377">TransferFunction.cpp:377</a></div></div> +<div class="ttc" id="class_transfer_function_html_a5f09dd8e5c016a90c69a8e38ef302c8a"><div class="ttname"><a href="class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a">TransferFunction::CalculateSpaceState</a></div><div class="ttdeci">virtual void CalculateSpaceState(int maxIteration=100, double error=1e-3)</div><div class="ttdoc">Convert the transfer function to space state on controllable canonical form (CCF). </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00268">TransferFunction.cpp:268</a></div></div> <div class="ttc" id="class_transfer_function_form_html"><div class="ttname"><a href="class_transfer_function_form.html">TransferFunctionForm</a></div><div class="ttdoc">Form to edit the transfer function control data. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_form_8h_source.html#l00032">TransferFunctionForm.h:32</a></div></div> -<div class="ttc" id="struct_transfer_function_1_1_space_state_html"><div class="ttname"><a href="struct_transfer_function_1_1_space_state.html">TransferFunction::SpaceState</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00031">TransferFunction.h:31</a></div></div> +<div class="ttc" id="struct_transfer_function_1_1_space_state_html"><div class="ttname"><a href="struct_transfer_function_1_1_space_state.html">TransferFunction::SpaceState</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00038">TransferFunction.h:38</a></div></div> <div class="ttc" id="class_transfer_function_html_ae145b86db1450a19a3ed32084ee60423"><div class="ttname"><a href="class_transfer_function.html#ae145b86db1450a19a3ed32084ee60423">TransferFunction::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00237">TransferFunction.cpp:237</a></div></div> <div class="ttc" id="_transfer_function_form_8h_html"><div class="ttname"><a href="_transfer_function_form_8h.html">TransferFunctionForm.h</a></div></div> -<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00028">TransferFunction.h:28</a></div></div> +<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdoc">Calculates the time response by a frequency domain transfer function. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00035">TransferFunction.h:35</a></div></div> +<div class="ttc" id="class_transfer_function_html_ab23ed101f7d4e953e4df0d4d480d9798"><div class="ttname"><a href="class_transfer_function.html#ab23ed101f7d4e953e4df0d4d480d9798">TransferFunction::Solve</a></div><div class="ttdeci">virtual bool Solve(double input, double timeStep)</div><div class="ttdoc">Calculates the time response by the space state form of transfer function. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00320">TransferFunction.cpp:320</a></div></div> <div class="ttc" id="class_transfer_function_html_a0cd1dec850117741abb04b608c7b3f1e"><div class="ttname"><a href="class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e">TransferFunction::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00052">TransferFunction.cpp:52</a></div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> +<div class="ttc" id="_transfer_function_8h_html"><div class="ttname"><a href="_transfer_function_8h.html">TransferFunction.h</a></div></div> <div class="ttc" id="classwx_g_l_string_html"><div class="ttname"><a href="classwx_g_l_string.html">wxGLString</a></div><div class="ttdef"><b>Definition:</b> <a href="wx_g_l_string_8h_source.html#l00077">wxGLString.h:77</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> diff --git a/docs/doxygen/html/_transfer_function_8h.html b/docs/doxygen/html/_transfer_function_8h.html new file mode 100644 index 0000000..5abcd43 --- /dev/null +++ b/docs/doxygen/html/_transfer_function_8h.html @@ -0,0 +1,119 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/TransferFunction.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_transfer_function_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<div class="title">TransferFunction.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_control_element_8h_source.html">ControlElement.h</a>"</code><br /> +<code>#include <wx/dcscreen.h></code><br /> +<code>#include "wxGLString.h"</code><br /> +</div> +<p><a href="_transfer_function_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_transfer_function.html">TransferFunction</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Calculates the time response by a frequency domain transfer function. <a href="class_transfer_function.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_transfer_function_1_1_space_state.html">TransferFunction::SpaceState</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_transfer_function_8h.html">TransferFunction.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_transfer_function_8h_source.html b/docs/doxygen/html/_transfer_function_8h_source.html index bd51bfe..6a75258 100644 --- a/docs/doxygen/html/_transfer_function_8h_source.html +++ b/docs/doxygen/html/_transfer_function_8h_source.html @@ -88,15 +88,17 @@ $(document).ready(function(){initNavTree('_transfer_function_8h_source.html','') <div class="title">TransferFunction.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef TRANSFERFUNCTION_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define TRANSFERFUNCTION_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_transfer_function_form.html">TransferFunctionForm</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="class_transfer_function.html"> 28</a></span> <span class="keyword">class </span><a class="code" href="class_transfer_function.html">TransferFunction</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="struct_transfer_function_1_1_space_state.html"> 31</a></span>  <span class="keyword">struct </span><a class="code" href="struct_transfer_function_1_1_space_state.html">SpaceState</a> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  std::vector<std::vector<double> > A;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  std::vector<double> B;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  std::vector<double> C;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordtype">double</span> D;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  };</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  ~<a class="code" href="class_transfer_function.html">TransferFunction</a>();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="class_transfer_function.html#a6a4415d2cf0af290494ea30d586cc187"> 42</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_transfer_function.html#a6a4415d2cf0af290494ea30d586cc187">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="class_transfer_function.html#a6325dec72c7b85178f490c5cf85229bd"> 43</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_transfer_function.html#a6325dec72c7b85178f490c5cf85229bd">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_transfer_function.html#afe15de93ab4f93032560a6139091ef10">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_transfer_function.html#ae145b86db1450a19a3ed32084ee60423">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keyword">virtual</span> std::vector<double> GetNumerator()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_numerator; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> std::vector<double> GetDenominator()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_denominator; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetNumerator(std::vector<double> numerator) { m_numerator = numerator; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetDenominator(std::vector<double> denominator) { m_denominator = denominator; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateTFText();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() { UpdateTFText(); }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">virtual</span> <a class="code" href="struct_transfer_function_1_1_space_state.html">SpaceState</a> GetSpaceState() { <span class="keywordflow">return</span> m_ss; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> CalculateSpaceState(<span class="keywordtype">int</span> maxIteration = 100, <span class="keywordtype">double</span> error = 1e-3);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Solve(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862">GetCopy</a>();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetText(wxString numerator, wxString denominator);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">virtual</span> wxString GetSuperscriptNumber(<span class="keywordtype">int</span> number);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> GetTFString(wxString& numerator, wxString& denominator);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">wchar_t</span> m_supNumber[10];</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringNum = NULL;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringDen = NULL;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordtype">int</span> m_fontSize = 10;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  std::vector<double> m_numerator;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  std::vector<double> m_denominator;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="struct_transfer_function_1_1_space_state.html">SpaceState</a> m_ss;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  std::vector<double> m_x;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  std::vector<double> m_dx;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordtype">double</span> m_error = 1e-3;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">int</span> m_maxIteration = 100;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> };</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#endif // TRANSFERFUNCTION_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_transfer_function_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef TRANSFERFUNCTION_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define TRANSFERFUNCTION_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_control_element_8h.html">ControlElement.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/dcscreen.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "wxGLString.h"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span><a class="code" href="class_transfer_function_form.html">TransferFunctionForm</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="class_transfer_function.html"> 35</a></span> <span class="keyword">class </span><a class="code" href="class_transfer_function.html">TransferFunction</a> : <span class="keyword">public</span> <a class="code" href="class_control_element.html">ControlElement</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="struct_transfer_function_1_1_space_state.html"> 38</a></span>  <span class="keyword">struct </span><a class="code" href="struct_transfer_function_1_1_space_state.html">SpaceState</a> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  std::vector<std::vector<double> > A;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  std::vector<double> B;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  std::vector<double> C;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">double</span> D;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  };</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  ~<a class="code" href="class_transfer_function.html">TransferFunction</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e">Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="class_transfer_function.html#a6a4415d2cf0af290494ea30d586cc187"> 49</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_transfer_function.html#a6a4415d2cf0af290494ea30d586cc187">Contains</a>(wxPoint2DDouble position)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Contains(position); }</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="class_transfer_function.html#a6325dec72c7b85178f490c5cf85229bd"> 50</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_transfer_function.html#a6325dec72c7b85178f490c5cf85229bd">Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_rect.Intersects(rect); }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_transfer_function.html#afe15de93ab4f93032560a6139091ef10">ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_transfer_function.html#ae145b86db1450a19a3ed32084ee60423">Rotate</a>(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">virtual</span> std::vector<double> GetNumerator()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_numerator; }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">virtual</span> std::vector<double> GetDenominator()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_denominator; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetNumerator(std::vector<double> numerator) { m_numerator = numerator; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetDenominator(std::vector<double> denominator) { m_denominator = denominator; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateTFText();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> UpdateText() { UpdateTFText(); }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">virtual</span> <a class="code" href="struct_transfer_function_1_1_space_state.html">SpaceState</a> GetSpaceState() { <span class="keywordflow">return</span> m_ss; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a">CalculateSpaceState</a>(<span class="keywordtype">int</span> maxIteration = 100, <span class="keywordtype">double</span> error = 1e-3);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="class_transfer_function.html#ab23ed101f7d4e953e4df0d4d480d9798">Solve</a>(<span class="keywordtype">double</span> input, <span class="keywordtype">double</span> timeStep);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862">GetCopy</a>();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetText(wxString numerator, wxString denominator);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">virtual</span> wxString GetSuperscriptNumber(<span class="keywordtype">int</span> number);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> GetTFString(wxString& numerator, wxString& denominator);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">wchar_t</span> m_supNumber[10];</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringNum = NULL;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <a class="code" href="classwx_g_l_string.html">wxGLString</a>* m_glStringDen = NULL;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">int</span> m_fontSize = 10;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  std::vector<double> m_numerator;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  std::vector<double> m_denominator;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="struct_transfer_function_1_1_space_state.html">SpaceState</a> m_ss;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  std::vector<double> m_x;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  std::vector<double> m_dx;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordtype">double</span> m_error = 1e-3;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keywordtype">int</span> m_maxIteration = 100;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> };</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor">#endif // TRANSFERFUNCTION_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="class_transfer_function_html_afe15de93ab4f93032560a6139091ef10"><div class="ttname"><a href="class_transfer_function.html#afe15de93ab4f93032560a6139091ef10">TransferFunction::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00226">TransferFunction.cpp:226</a></div></div> -<div class="ttc" id="class_transfer_function_html_a3312f7e9499aa99742093d3b60547862"><div class="ttname"><a href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862">TransferFunction::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00376">TransferFunction.cpp:376</a></div></div> -<div class="ttc" id="class_transfer_function_html_a6325dec72c7b85178f490c5cf85229bd"><div class="ttname"><a href="class_transfer_function.html#a6325dec72c7b85178f490c5cf85229bd">TransferFunction::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00043">TransferFunction.h:43</a></div></div> +<div class="ttc" id="class_transfer_function_html_a3312f7e9499aa99742093d3b60547862"><div class="ttname"><a href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862">TransferFunction::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00377">TransferFunction.cpp:377</a></div></div> +<div class="ttc" id="class_transfer_function_html_a6325dec72c7b85178f490c5cf85229bd"><div class="ttname"><a href="class_transfer_function.html#a6325dec72c7b85178f490c5cf85229bd">TransferFunction::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00050">TransferFunction.h:50</a></div></div> +<div class="ttc" id="class_transfer_function_html_a5f09dd8e5c016a90c69a8e38ef302c8a"><div class="ttname"><a href="class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a">TransferFunction::CalculateSpaceState</a></div><div class="ttdeci">virtual void CalculateSpaceState(int maxIteration=100, double error=1e-3)</div><div class="ttdoc">Convert the transfer function to space state on controllable canonical form (CCF). </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00268">TransferFunction.cpp:268</a></div></div> <div class="ttc" id="class_transfer_function_form_html"><div class="ttname"><a href="class_transfer_function_form.html">TransferFunctionForm</a></div><div class="ttdoc">Form to edit the transfer function control data. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_form_8h_source.html#l00032">TransferFunctionForm.h:32</a></div></div> -<div class="ttc" id="struct_transfer_function_1_1_space_state_html"><div class="ttname"><a href="struct_transfer_function_1_1_space_state.html">TransferFunction::SpaceState</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00031">TransferFunction.h:31</a></div></div> +<div class="ttc" id="struct_transfer_function_1_1_space_state_html"><div class="ttname"><a href="struct_transfer_function_1_1_space_state.html">TransferFunction::SpaceState</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00038">TransferFunction.h:38</a></div></div> <div class="ttc" id="class_transfer_function_html_ae145b86db1450a19a3ed32084ee60423"><div class="ttname"><a href="class_transfer_function.html#ae145b86db1450a19a3ed32084ee60423">TransferFunction::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00237">TransferFunction.cpp:237</a></div></div> -<div class="ttc" id="class_transfer_function_html_a6a4415d2cf0af290494ea30d586cc187"><div class="ttname"><a href="class_transfer_function.html#a6a4415d2cf0af290494ea30d586cc187">TransferFunction::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00042">TransferFunction.h:42</a></div></div> -<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00028">TransferFunction.h:28</a></div></div> +<div class="ttc" id="class_transfer_function_html_a6a4415d2cf0af290494ea30d586cc187"><div class="ttname"><a href="class_transfer_function.html#a6a4415d2cf0af290494ea30d586cc187">TransferFunction::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00049">TransferFunction.h:49</a></div></div> +<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdoc">Calculates the time response by a frequency domain transfer function. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00035">TransferFunction.h:35</a></div></div> +<div class="ttc" id="class_transfer_function_html_ab23ed101f7d4e953e4df0d4d480d9798"><div class="ttname"><a href="class_transfer_function.html#ab23ed101f7d4e953e4df0d4d480d9798">TransferFunction::Solve</a></div><div class="ttdeci">virtual bool Solve(double input, double timeStep)</div><div class="ttdoc">Calculates the time response by the space state form of transfer function. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00320">TransferFunction.cpp:320</a></div></div> <div class="ttc" id="_control_element_8h_html"><div class="ttname"><a href="_control_element_8h.html">ControlElement.h</a></div><div class="ttdoc">Base class of a control element. Provide general methods to other control classes. </div></div> <div class="ttc" id="class_transfer_function_html_a0cd1dec850117741abb04b608c7b3f1e"><div class="ttname"><a href="class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e">TransferFunction::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8cpp_source.html#l00052">TransferFunction.cpp:52</a></div></div> <div class="ttc" id="class_control_element_html"><div class="ttname"><a href="class_control_element.html">ControlElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_control_element_8h_source.html#l00084">ControlElement.h:84</a></div></div> @@ -106,7 +108,7 @@ $(document).ready(function(){initNavTree('_transfer_function_8h_source.html','') <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>TransferFunction.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_transfer_function_8h.html">TransferFunction.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_transfer_function_form_8cpp_source.html b/docs/doxygen/html/_transfer_function_form_8cpp_source.html index 3cce3f7..ae3e1b7 100644 --- a/docs/doxygen/html/_transfer_function_form_8cpp_source.html +++ b/docs/doxygen/html/_transfer_function_form_8cpp_source.html @@ -88,9 +88,10 @@ $(document).ready(function(){initNavTree('_transfer_function_form_8cpp_source.ht <div class="title">TransferFunctionForm.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_transfer_function_form_8h.html">TransferFunctionForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "TransferFunction.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> TransferFunctionForm::TransferFunctionForm(wxWindow* parent, <a class="code" href="class_transfer_function.html">TransferFunction</a>* transferFunction)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  : <a class="code" href="class_transfer_function_form_base.html">TransferFunctionFormBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_parent = parent;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_tf = transferFunction;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  LoadTFData();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> TransferFunctionForm::~TransferFunctionForm() {}</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keywordtype">void</span> TransferFunctionForm::OnCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keywordtype">void</span> TransferFunctionForm::OnOKClick(wxCommandEvent& event)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keywordtype">void</span> TransferFunctionForm::LoadTFData()</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">auto</span> num = m_tf->GetNumerator();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">auto</span> den = m_tf->GetDenominator();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  wxString numStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = num.begin(), itEnd = num.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> value = *it;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>(it == num.begin())</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  numStr = m_tf->StringFromDouble(value, 0);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  numStr += <span class="stringliteral">" "</span> + m_tf->StringFromDouble(value, 0);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_textCtrlNumerator->SetValue(numStr);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxString denStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = den.begin(), itEnd = den.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> value = *it;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span>(it == den.begin())</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  denStr = m_tf->StringFromDouble(value, 0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  denStr += <span class="stringliteral">" "</span> + m_tf->StringFromDouble(value, 0);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_textCtrlDenominator->SetValue(denStr);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keywordtype">bool</span> TransferFunctionForm::ValidateData()</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  wxString num = m_textCtrlNumerator->GetValue();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  std::vector<double> numerator;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">while</span>(num != <span class="stringliteral">""</span>) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  wxString rest;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  wxString strValue = num.BeforeFirst(<span class="charliteral">' '</span>, &rest);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  num = rest;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">double</span> value = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(!m_tf->DoubleFromString(<span class="keyword">this</span>, strValue, value,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Numerator parameters\"."</span>)))</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  numerator.push_back(value);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  wxString den = m_textCtrlDenominator->GetValue();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  std::vector<double> denominator;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">while</span>(den != <span class="stringliteral">""</span>) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  wxString rest;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  wxString strValue = den.BeforeFirst(<span class="charliteral">' '</span>, &rest);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  den = rest;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">double</span> value = 0;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(!m_tf->DoubleFromString(<span class="keyword">this</span>, strValue, value,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Denominator parameters\"."</span>)))</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  denominator.push_back(value);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_tf->SetNumerator(numerator);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_tf->SetDenominator(denominator);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_tf->UpdateTFText();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</div><div class="ttc" id="_transfer_function_form_8h_html"><div class="ttname"><a href="_transfer_function_form_8h.html">TransferFunctionForm.h</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_transfer_function_form_8h.html">TransferFunctionForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_transfer_function_8h.html">TransferFunction.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> TransferFunctionForm::TransferFunctionForm(wxWindow* parent, <a class="code" href="class_transfer_function.html">TransferFunction</a>* transferFunction)</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  : <a class="code" href="class_transfer_function_form_base.html">TransferFunctionFormBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  m_parent = parent;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  m_tf = transferFunction;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  LoadTFData();</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> TransferFunctionForm::~TransferFunctionForm() {}</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keywordtype">void</span> TransferFunctionForm::OnCancelClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keywordtype">void</span> TransferFunctionForm::OnOKClick(wxCommandEvent& event)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> }</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keywordtype">void</span> TransferFunctionForm::LoadTFData()</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">auto</span> num = m_tf->GetNumerator();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">auto</span> den = m_tf->GetDenominator();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  wxString numStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = num.begin(), itEnd = num.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> value = *it;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>(it == num.begin())</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  numStr = m_tf->StringFromDouble(value, 0);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  numStr += <span class="stringliteral">" "</span> + m_tf->StringFromDouble(value, 0);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_textCtrlNumerator->SetValue(numStr);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  wxString denStr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = den.begin(), itEnd = den.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordtype">double</span> value = *it;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span>(it == den.begin())</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  denStr = m_tf->StringFromDouble(value, 0);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  denStr += <span class="stringliteral">" "</span> + m_tf->StringFromDouble(value, 0);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_textCtrlDenominator->SetValue(denStr);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="keywordtype">bool</span> TransferFunctionForm::ValidateData()</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  wxString num = m_textCtrlNumerator->GetValue();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  std::vector<double> numerator;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">while</span>(num != <span class="stringliteral">""</span>) {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  wxString rest;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  wxString strValue = num.BeforeFirst(<span class="charliteral">' '</span>, &rest);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  num = rest;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordtype">double</span> value = 0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(!m_tf->DoubleFromString(<span class="keyword">this</span>, strValue, value,</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Numerator parameters\"."</span>)))</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  numerator.push_back(value);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  wxString den = m_textCtrlDenominator->GetValue();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  std::vector<double> denominator;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">while</span>(den != <span class="stringliteral">""</span>) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  wxString rest;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  wxString strValue = den.BeforeFirst(<span class="charliteral">' '</span>, &rest);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  den = rest;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordtype">double</span> value = 0;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span>(!m_tf->DoubleFromString(<span class="keyword">this</span>, strValue, value,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Denominator parameters\"."</span>)))</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  denominator.push_back(value);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_tf->SetNumerator(numerator);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_tf->SetDenominator(denominator);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  m_tf->UpdateTFText();</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> }</div><div class="ttc" id="_transfer_function_form_8h_html"><div class="ttname"><a href="_transfer_function_form_8h.html">TransferFunctionForm.h</a></div></div> <div class="ttc" id="class_transfer_function_form_base_html"><div class="ttname"><a href="class_transfer_function_form_base.html">TransferFunctionFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00775">ElementForm.h:775</a></div></div> -<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00028">TransferFunction.h:28</a></div></div> +<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdoc">Calculates the time response by a frequency domain transfer function. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00035">TransferFunction.h:35</a></div></div> +<div class="ttc" id="_transfer_function_8h_html"><div class="ttname"><a href="_transfer_function_8h.html">TransferFunction.h</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_transfer_function_form_8h_source.html b/docs/doxygen/html/_transfer_function_form_8h_source.html index 20ec72f..1dfc2e7 100644 --- a/docs/doxygen/html/_transfer_function_form_8h_source.html +++ b/docs/doxygen/html/_transfer_function_form_8h_source.html @@ -90,7 +90,7 @@ $(document).ready(function(){initNavTree('_transfer_function_form_8h_source.html <div class="contents"> <a href="_transfer_function_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef TRANSFERFUNCTIONFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define TRANSFERFUNCTIONFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_transfer_function.html">TransferFunction</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="class_transfer_function_form.html"> 32</a></span> <span class="keyword">class </span><a class="code" href="class_transfer_function_form.html">TransferFunctionForm</a> : <span class="keyword">public</span> <a class="code" href="class_transfer_function_form_base.html">TransferFunctionFormBase</a></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="class_transfer_function_form.html">TransferFunctionForm</a>(wxWindow* parent, <a class="code" href="class_transfer_function.html">TransferFunction</a>* transferFunction);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_transfer_function_form.html">TransferFunctionForm</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelClick(wxCommandEvent& event);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKClick(wxCommandEvent& event);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">void</span> LoadTFData();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="class_transfer_function.html">TransferFunction</a>* m_tf = NULL;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> };</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#endif // TRANSFERFUNCTIONFORM_H</span></div><div class="ttc" id="class_transfer_function_form_html"><div class="ttname"><a href="class_transfer_function_form.html">TransferFunctionForm</a></div><div class="ttdoc">Form to edit the transfer function control data. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_form_8h_source.html#l00032">TransferFunctionForm.h:32</a></div></div> <div class="ttc" id="class_transfer_function_form_base_html"><div class="ttname"><a href="class_transfer_function_form_base.html">TransferFunctionFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00775">ElementForm.h:775</a></div></div> -<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00028">TransferFunction.h:28</a></div></div> +<div class="ttc" id="class_transfer_function_html"><div class="ttname"><a href="class_transfer_function.html">TransferFunction</a></div><div class="ttdoc">Calculates the time response by a frequency domain transfer function. </div><div class="ttdef"><b>Definition:</b> <a href="_transfer_function_8h_source.html#l00035">TransferFunction.h:35</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_transformer_8cpp_source.html b/docs/doxygen/html/_transformer_8cpp_source.html index c8465d5..27810c6 100644 --- a/docs/doxygen/html/_transformer_8cpp_source.html +++ b/docs/doxygen/html/_transformer_8cpp_source.html @@ -88,10 +88,11 @@ $(document).ready(function(){initNavTree('_transformer_8cpp_source.html','');}); <div class="title">Transformer.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_transformer_form_8h.html">TransformerForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "Transformer.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Transformer::Transformer() : <a class="code" href="class_branch.html">Branch</a>()</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 3; j++) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> Transformer::Transformer(wxString name) : <a class="code" href="class_branch.html">Branch</a>()</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 3; j++) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_electricalData.name = name;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> Transformer::~Transformer() {}</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6"> 39</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6">Transformer::AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// First bus.</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span>(m_parentList.size() == 0) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_position = position;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_pointList.push_back(parentPt); <span class="comment">// First point</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_switchRect.push_back(genRect);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// Second bus.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent != m_parentList[0]) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// Get the average between the two bus points.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_position =</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  wxPoint2DDouble((m_pointList[0].m_x + parentPt.m_x) / 2.0, (m_pointList[0].m_y + parentPt.m_y) / 2.0);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Set the transformer rectangle.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_width = 70.0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_height = 40.0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  SetPosition(m_position); <span class="comment">// This method calculates the rectangle propely.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Set the "side" points.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_pointList.push_back(</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  wxPoint2DDouble(m_rect.GetPosition() + wxPoint2DDouble(-10 - m_borderSize, m_height / 2.0)));</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_pointList.push_back(</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  wxPoint2DDouble(m_rect.GetPosition() + wxPoint2DDouble(m_width + 10 + m_borderSize, m_height / 2.0)));</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// Set first switch point.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  wxPoint2DDouble secondPoint = parentPt;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span>(m_pointList.size() > 2) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  secondPoint = m_pointList[2];</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], secondPoint);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// Set the second switch point.</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_pointList[m_pointList.size() - 1]));</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_pointList.push_back(parentPt); <span class="comment">// Last point.</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_inserted = <span class="keyword">true</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_switchRect.push_back(genRect);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  UpdateSwitches();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="class_transformer.html#a327ff3cf9194c18049e4feac6761ebc0"> 105</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transformer.html#a327ff3cf9194c18049e4feac6761ebc0">Transformer::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keyword"></span>{</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  wxPoint2DDouble ptR = RotateAtPosition(position, -m_angle);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="class_transformer.html#a1e9e9ba48aa76bdd2ff2e973014ad422"> 111</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#a1e9e9ba48aa76bdd2ff2e973014ad422">Transformer::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keyword"></span>{</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  elementColour = m_offlineElementColour;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// Draw selection (layer 1).</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// Push the current matrix on stack.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  glPushMatrix();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// Rotate the matrix around the object position.</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  GL_POLYGON);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20,</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  GL_POLYGON);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  glPopMatrix();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// Draw nodes selection.</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>(m_pointList.size() > 0) {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  DrawCircle(m_pointList[m_pointList.size() - 1], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// Draw transformer (layer 2).</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// Transformer line</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  glLineWidth(1.5);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">// Draw nodes.</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span>(m_pointList.size() > 0) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  DrawCircle(m_pointList[m_pointList.size() - 1], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  DrawSwitches();</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  DrawPowerFlowPts();</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// Push the current matrix on stack.</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  glPushMatrix();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// Rotate the matrix around the object position.</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20, 20, GL_POLYGON);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20, 20, GL_POLYGON);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20, 20);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20, 20);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  DrawPoint(m_rect.GetPosition(), 8.0 * scale);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  glPopMatrix();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="class_transformer.html#a39b58fcf230970601c5d77c088559731"> 190</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transformer.html#a39b58fcf230970601c5d77c088559731">Transformer::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keyword"></span>{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span>(m_angle == 0.0 || m_angle == 180.0) <span class="keywordflow">return</span> m_rect.Intersects(rect);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> RotatedRectanglesIntersects(m_rect, rect, m_angle, 0.0);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="class_transformer.html#aaa6cc999eb77a94dafaec5debb4db3de"> 196</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#aaa6cc999eb77a94dafaec5debb4db3de">Transformer::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  m_angle += rotAngle;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// Rotate all the points, except the switches and buses points.</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  m_pointList[i] = RotateAtPosition(m_pointList[i], rotAngle);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8"> 212</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8">Transformer::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="comment">// Move all the points, except the switches and buses points.</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">if</span>(!m_parentList[0]) {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span>(!m_parentList[1]) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="class_transformer.html#a9652232a076cca0fe3753477ec88f63a"> 232</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#a9652232a076cca0fe3753477ec88f63a">Transformer::MoveNode</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="comment">// First bus.</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="comment">// Second bus.</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>(m_parentList[1]) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_parentList[1]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  m_parentList[1] = NULL;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">// Recalculate switches positions</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5"> 266</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5">Transformer::StartMove</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  m_moveStartPt = position;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  m_movePts = m_pointList;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  m_movePos = m_position;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="class_transformer.html#adfe51a2198cfc10e1095af9c034681bd"> 273</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transformer.html#adfe51a2198cfc10e1095af9c034681bd">Transformer::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit tranformer"</span>));</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="class_transformer.html#acb55f182a7f6d7af0feb6a94cb62af4f"> 280</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transformer.html#acb55f182a7f6d7af0feb6a94cb62af4f">Transformer::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="class_transformer_form.html">TransformerForm</a>* transfForm = <span class="keyword">new</span> <a class="code" href="class_transformer_form.html">TransformerForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span>(transfForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  transfForm->Destroy();</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  transfForm->Destroy();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="class_transformer.html#a7e3cd54e20d795ab9b0b8533ce03b728"> 291</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#a7e3cd54e20d795ab9b0b8533ce03b728">Transformer::SetNominalVoltage</a>(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span>(nominalVoltage.size() == 1) {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  m_electricalData.primaryNominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  m_electricalData.primaryNominalVoltageUnit = nominalVoltageUnit[0];</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(nominalVoltage.size() == 2) {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  m_electricalData.primaryNominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  m_electricalData.primaryNominalVoltageUnit = nominalVoltageUnit[0];</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_electricalData.secondaryNominalVoltage = nominalVoltage[1];</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  m_electricalData.secondaryNominalVoltageUnit = nominalVoltageUnit[1];</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keywordtype">void</span> Transformer::UpdatePowerFlowArrowsPosition()</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  std::vector<wxPoint2DDouble> edges;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">switch</span>(m_pfDirection) {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>: {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  m_powerFlowArrow.clear();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523">PF_BUS1_TO_BUS2</a>: {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < (int)m_pointList.size() - 1; i++) {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  edges.push_back(m_pointList[i]);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095">PF_BUS2_TO_BUS1</a>: {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = (<span class="keywordtype">int</span>)m_pointList.size() - 2; i > 0; i--) {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  edges.push_back(m_pointList[i]);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  CalculatePowerFlowPts(edges);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="class_transformer.html#adf0b20286f3de359346b8877d65c1996"> 327</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#adf0b20286f3de359346b8877d65c1996">Transformer::RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  m_pointList[0] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], rotAngle);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  m_pointList[m_pointList.size() - 1] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[m_pointList.size() - 1], rotAngle);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="class_transformer.html#a4f9137e6190fb630167f671a0da51ab6"> 341</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transformer.html#a4f9137e6190fb630167f671a0da51ab6">Transformer::SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1 && parent == m_parentList[0]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2 && parent == m_parentList[1]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  wxRect2DDouble nodeRect(0, 0, 0, 0);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  nodeRect = wxRect2DDouble(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="comment">// Check if the user is trying to connect the same bus.</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">if</span>(m_parentList[1] == parent) {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  m_parentList[0] = parent;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="comment">// Centralize the node on bus.</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  wxPoint2DDouble parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  m_pointList[0], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  m_pointList[0] = parentPt;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">if</span>(m_parentList[0] == parent) {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  m_parentList[1] = parent;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[m_pointList.size() - 1], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  m_pointList[m_pointList.size() - 1] = parentPt;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) m_parentList[0] = NULL;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) m_parentList[1] = NULL;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="class_transformer.html#a328c419af15701734168c8db62eefa36"> 405</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#a328c419af15701734168c8db62eefa36">Transformer::SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection)</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  m_pfDirection = pfDirection;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="class_transformer.html#a286bcc94f7202a6ff81b66707424a9bd"> 411</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_transformer.html#a286bcc94f7202a6ff81b66707424a9bd">Transformer::GetCopy</a>()</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="class_transformer.html">Transformer</a>* copy = <span class="keyword">new</span> <a class="code" href="class_transformer.html">Transformer</a>();</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="class_transformer.html#a169064f996341f8f8b6881c6a3909f0b"> 418</a></span> wxString <a class="code" href="class_transformer.html#a169064f996341f8f8b6881c6a3909f0b">Transformer::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="keyword"></span>{</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  wxString primVoltage = StringFromDouble(m_electricalData.primaryNominalVoltage);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">switch</span>(m_electricalData.primaryNominalVoltageUnit) {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  primVoltage += _(<span class="stringliteral">" V"</span>);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  primVoltage += _(<span class="stringliteral">" kV"</span>);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  wxString secVoltage = StringFromDouble(m_electricalData.secondaryNominalVoltage);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">switch</span>(m_electricalData.secondaryNominalVoltageUnit) {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  secVoltage += _(<span class="stringliteral">" V"</span>);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  secVoltage += _(<span class="stringliteral">" kV"</span>);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  tipText += <span class="stringliteral">"\n"</span> + primVoltage + <span class="stringliteral">" / "</span> + secVoltage;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordtype">int</span> busNumber[2];</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  busNumber[0] = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[0])->GetElectricalData().number + 1;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  busNumber[1] = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[1])->GetElectricalData().number + 1;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  tipText += _(<span class="stringliteral">"\nP"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[0], busNumber[1]) +</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  wxString::FromDouble(m_electricalData.powerFlow[0].real(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  tipText += _(<span class="stringliteral">"\nQ"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[0], busNumber[1]) +</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  wxString::FromDouble(m_electricalData.powerFlow[0].imag(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  tipText += _(<span class="stringliteral">"\nP"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[1], busNumber[0]) +</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  wxString::FromDouble(m_electricalData.powerFlow[1].real(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  tipText += _(<span class="stringliteral">"\nQ"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[1], busNumber[0]) +</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  wxString::FromDouble(m_electricalData.powerFlow[1].imag(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> </div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> Transformer::GetPUElectricalData(<span class="keywordtype">double</span> systemBasePower)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordtype">double</span> transformerBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordtype">double</span> baseVoltage = 0.0;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">if</span>(data.baseVoltage == 0) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  baseVoltage = GetValueFromUnit(data.primaryNominalVoltage, data.primaryNominalVoltageUnit);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  baseVoltage = GetValueFromUnit(data.secondaryNominalVoltage, data.secondaryNominalVoltageUnit);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordtype">double</span> systemBaseImpedance = (baseVoltage * baseVoltage) / systemBasePower;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordtype">double</span> transformerBaseImpedance = (baseVoltage * baseVoltage) / transformerBasePower;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="comment">// Resistance</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordtype">double</span> r = data.resistance;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">if</span>(data.resistanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.resistance = (r * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  data.resistance = r / systemBaseImpedance;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> </div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="comment">// Indutive reactance</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordtype">double</span> x = data.indReactance;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">if</span>(data.indReactanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.indReactance = (x * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  data.indReactance = x / systemBaseImpedance;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="comment">// Zero seq. resistance</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordtype">double</span> r0 = data.zeroResistance;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.zeroResistance = (r0 * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> </div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="comment">// Zero seq. ind. reactance</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordtype">double</span> x0 = data.zeroIndReactance;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.zeroIndReactance = (x0 * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="comment">// Primary ground resistance</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordtype">double</span> rgp = data.primaryGrndResistance;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.primaryGrndResistance = (rgp * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="comment">// Primary ground ind reactance</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordtype">double</span> xgp = data.primaryGrndReactance;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.primaryGrndReactance = (xgp * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="comment">// Secondary ground resistance</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordtype">double</span> rgs = data.secondaryGrndResistance;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.secondaryGrndResistance = (rgs * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="comment">// Secondary ground ind reactance</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordtype">double</span> xgs = data.secondaryGrndReactance;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.secondaryGrndReactance = (xgs * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  data.powerFlow[0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  data.powerFlow[1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  data.faultCurrent[0][0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  data.faultCurrent[0][1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  data.faultCurrent[0][2] = std::complex<double>(0, 0);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  data.faultCurrent[1][0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  data.faultCurrent[1][1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  data.faultCurrent[1][2] = std::complex<double>(0, 0);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> </div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_transformer_form_8h.html">TransformerForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_transformer_8h.html">Transformer.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> Transformer::Transformer() : <a class="code" href="class_branch.html">Branch</a>()</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 3; j++) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> Transformer::Transformer(wxString name) : <a class="code" href="class_branch.html">Branch</a>()</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < 2; i++) {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < 3; j++) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_electricalData.name = name;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> Transformer::~Transformer() {}</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6"> 39</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6">Transformer::AddParent</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// First bus.</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span>(m_parentList.size() == 0) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  m_position = position;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_pointList.push_back(parentPt); <span class="comment">// First point</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_switchRect.push_back(genRect);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment">// Second bus.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent != m_parentList[0]) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_parentList.push_back(parent);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(position, -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate back.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// Get the average between the two bus points.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  m_position =</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  wxPoint2DDouble((m_pointList[0].m_x + parentPt.m_x) / 2.0, (m_pointList[0].m_y + parentPt.m_y) / 2.0);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="comment">// Set the transformer rectangle.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_width = 70.0;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_height = 40.0;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  SetPosition(m_position); <span class="comment">// This method calculates the rectangle propely.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// Set the "side" points.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_pointList.push_back(</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  wxPoint2DDouble(m_rect.GetPosition() + wxPoint2DDouble(-10 - m_borderSize, m_height / 2.0)));</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  m_pointList.push_back(</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  wxPoint2DDouble(m_rect.GetPosition() + wxPoint2DDouble(m_width + 10 + m_borderSize, m_height / 2.0)));</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="comment">// Set first switch point.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  wxPoint2DDouble secondPoint = parentPt;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span>(m_pointList.size() > 2) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  secondPoint = m_pointList[2];</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], secondPoint);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// Set the second switch point.</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_pointList[m_pointList.size() - 1]));</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_pointList.push_back(parentPt); <span class="comment">// Last point.</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  m_inserted = <span class="keyword">true</span>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  wxRect2DDouble genRect(0, 0, 0, 0);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  m_switchRect.push_back(genRect);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  UpdateSwitches();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="class_transformer.html#a327ff3cf9194c18049e4feac6761ebc0"> 105</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transformer.html#a327ff3cf9194c18049e4feac6761ebc0">Transformer::Contains</a>(wxPoint2DDouble position)<span class="keyword"> const</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="keyword"></span>{</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  wxPoint2DDouble ptR = RotateAtPosition(position, -m_angle);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> m_rect.Contains(ptR);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="class_transformer.html#a1e9e9ba48aa76bdd2ff2e973014ad422"> 111</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#a1e9e9ba48aa76bdd2ff2e973014ad422">Transformer::Draw</a>(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale)<span class="keyword"> const</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keyword"></span>{</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="class_open_g_l_colour.html">OpenGLColour</a> elementColour;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(m_dynEvent)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  elementColour = m_dynamicEventColour;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  elementColour = m_onlineElementColour;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  elementColour = m_offlineElementColour;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// Draw selection (layer 1).</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(m_selected) {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// Push the current matrix on stack.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  glLineWidth(1.5 + m_borderSize * 2.0);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  glColor4dv(m_selectionColour.GetRGBA());</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  glPushMatrix();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// Rotate the matrix around the object position.</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20,</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  GL_POLYGON);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20,</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  GL_POLYGON);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  glPopMatrix();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// Draw nodes selection.</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>(m_pointList.size() > 0) {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  DrawCircle(m_pointList[0], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  DrawCircle(m_pointList[m_pointList.size() - 1], 5.0 + m_borderSize / scale, 10, GL_POLYGON);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// Draw transformer (layer 2).</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// Transformer line</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  glLineWidth(1.5);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  DrawLine(m_pointList);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">// Draw nodes.</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">if</span>(m_pointList.size() > 0) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span>(m_inserted) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  DrawCircle(m_pointList[m_pointList.size() - 1], 5.0, 10, GL_POLYGON);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  DrawSwitches();</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  DrawPowerFlowPts();</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// Push the current matrix on stack.</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  glPushMatrix();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// Rotate the matrix around the object position.</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  glTranslated(m_position.m_x, m_position.m_y, 0.0);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  glRotated(m_angle, 0.0, 0.0, 1.0);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  glTranslated(-m_position.m_x, -m_position.m_y, 0.0);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  glColor4d(1.0, 1.0, 1.0, 1.0);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20, 20, GL_POLYGON);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20, 20, GL_POLYGON);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  glColor4dv(elementColour.<a class="code" href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">GetRGBA</a>());</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20, 20);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20, 20);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  DrawPoint(m_rect.GetPosition(), 8.0 * scale);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  glPopMatrix();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="class_transformer.html#a39b58fcf230970601c5d77c088559731"> 190</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transformer.html#a39b58fcf230970601c5d77c088559731">Transformer::Intersects</a>(wxRect2DDouble rect)<span class="keyword"> const</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keyword"></span>{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">if</span>(m_angle == 0.0 || m_angle == 180.0) <span class="keywordflow">return</span> m_rect.Intersects(rect);</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">return</span> RotatedRectanglesIntersects(m_rect, rect, m_angle, 0.0);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="class_transformer.html#aaa6cc999eb77a94dafaec5debb4db3de"> 196</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#aaa6cc999eb77a94dafaec5debb4db3de">Transformer::Rotate</a>(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  m_angle += rotAngle;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span>(m_angle >= 360 || m_angle <= -360) m_angle = 0.0;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// Rotate all the points, except the switches and buses points.</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  m_pointList[i] = RotateAtPosition(m_pointList[i], rotAngle);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8"> 212</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8">Transformer::Move</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  SetPosition(m_movePos + position - m_moveStartPt);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="comment">// Move all the points, except the switches and buses points.</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 2; i < (int)m_pointList.size() - 2; i++) {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  m_pointList[i] = m_movePts[i] + position - m_moveStartPt;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">if</span>(!m_parentList[0]) {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span>(!m_parentList[1]) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="class_transformer.html#a9652232a076cca0fe3753477ec88f63a"> 232</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#a9652232a076cca0fe3753477ec88f63a">Transformer::MoveNode</a>(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="comment">// First bus.</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="comment">// Second bus.</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  m_pointList[0] = m_movePts[0] + position - m_moveStartPt;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">if</span>(m_parentList[0]) {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  m_parentList[0]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_parentList[0] = NULL;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>(m_parentList[1]) {</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  m_parentList[1]->RemoveChild(<span class="keyword">this</span>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  m_parentList[1] = NULL;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  m_online = <span class="keyword">false</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">// Recalculate switches positions</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5"> 266</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5">Transformer::StartMove</a>(wxPoint2DDouble position)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  m_moveStartPt = position;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  m_movePts = m_pointList;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  m_movePos = m_position;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="class_transformer.html#adfe51a2198cfc10e1095af9c034681bd"> 273</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transformer.html#adfe51a2198cfc10e1095af9c034681bd">Transformer::GetContextMenu</a>(wxMenu& menu)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  menu.Append(<a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>, _(<span class="stringliteral">"Edit tranformer"</span>));</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  GeneralMenuItens(menu);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> </div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="class_transformer.html#acb55f182a7f6d7af0feb6a94cb62af4f"> 280</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transformer.html#acb55f182a7f6d7af0feb6a94cb62af4f">Transformer::ShowForm</a>(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="class_transformer_form.html">TransformerForm</a>* transfForm = <span class="keyword">new</span> <a class="code" href="class_transformer_form.html">TransformerForm</a>(parent, <span class="keyword">this</span>);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span>(transfForm->ShowModal() == wxID_OK) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  transfForm->Destroy();</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  transfForm->Destroy();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="class_transformer.html#a7e3cd54e20d795ab9b0b8533ce03b728"> 291</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#a7e3cd54e20d795ab9b0b8533ce03b728">Transformer::SetNominalVoltage</a>(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span>(nominalVoltage.size() == 1) {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  m_electricalData.primaryNominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  m_electricalData.primaryNominalVoltageUnit = nominalVoltageUnit[0];</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(nominalVoltage.size() == 2) {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  m_electricalData.primaryNominalVoltage = nominalVoltage[0];</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  m_electricalData.primaryNominalVoltageUnit = nominalVoltageUnit[0];</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  m_electricalData.secondaryNominalVoltage = nominalVoltage[1];</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  m_electricalData.secondaryNominalVoltageUnit = nominalVoltageUnit[1];</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keywordtype">void</span> Transformer::UpdatePowerFlowArrowsPosition()</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  std::vector<wxPoint2DDouble> edges;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">switch</span>(m_pfDirection) {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a>: {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  m_powerFlowArrow.clear();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523">PF_BUS1_TO_BUS2</a>: {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 1; i < (int)m_pointList.size() - 1; i++) {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  edges.push_back(m_pointList[i]);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740a76c5c56adeea68291ce8b63b8e6cd095">PF_BUS2_TO_BUS1</a>: {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = (<span class="keywordtype">int</span>)m_pointList.size() - 2; i > 0; i--) {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  edges.push_back(m_pointList[i]);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  CalculatePowerFlowPts(edges);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> </div><div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="class_transformer.html#adf0b20286f3de359346b8877d65c1996"> 327</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#adf0b20286f3de359346b8877d65c1996">Transformer::RotateNode</a>(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordtype">double</span> rotAngle = m_rotationAngle;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">if</span>(!clockwise) rotAngle = -m_rotationAngle;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">if</span>(parent == m_parentList[0]) {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  m_pointList[0] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[0], rotAngle);</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(parent == m_parentList[1]) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  m_pointList[m_pointList.size() - 1] = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[m_pointList.size() - 1], rotAngle);</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="class_transformer.html#a4f9137e6190fb630167f671a0da51ab6"> 341</a></span> <span class="keywordtype">bool</span> <a class="code" href="class_transformer.html#a4f9137e6190fb630167f671a0da51ab6">Transformer::SetNodeParent</a>(<a class="code" href="class_element.html">Element</a>* parent)</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1 && parent == m_parentList[0]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2 && parent == m_parentList[1]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span>(parent && m_activeNodeID != 0) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  wxRect2DDouble nodeRect(0, 0, 0, 0);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  nodeRect = wxRect2DDouble(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(nodeRect)) {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="comment">// Check if the user is trying to connect the same bus.</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">if</span>(m_parentList[1] == parent) {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  m_parentList[0] = parent;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="comment">// Centralize the node on bus.</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  wxPoint2DDouble parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  m_pointList[0], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>()); <span class="comment">// Rotate click to horizontal position.</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y; <span class="comment">// Centralize on bus.</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  m_pointList[0] = parentPt;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">if</span>(m_parentList[0] == parent) {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  m_activeNodeID = 0;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  m_parentList[1] = parent;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  wxPoint2DDouble parentPt =</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(m_pointList[m_pointList.size() - 1], -parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  parentPt.m_y = parent-><a class="code" href="class_element.html#a536ad18a847dcc979c984b3cb287f238">GetPosition</a>().m_y;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  parentPt = parent-><a class="code" href="class_element.html#a99b213010776b34a27eb814aff288a34">RotateAtPosition</a>(parentPt, parent-><a class="code" href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">GetAngle</a>());</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  m_pointList[m_pointList.size() - 1] = parentPt;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  UpdateSwitchesPosition();</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keywordflow">if</span>(m_activeNodeID == 1) m_parentList[0] = NULL;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">if</span>(m_activeNodeID == 2) m_parentList[1] = NULL;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span> }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span> </div><div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="class_transformer.html#a328c419af15701734168c8db62eefa36"> 405</a></span> <span class="keywordtype">void</span> <a class="code" href="class_transformer.html#a328c419af15701734168c8db62eefa36">Transformer::SetPowerFlowDirection</a>(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection)</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  m_pfDirection = pfDirection;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> </div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="class_transformer.html#a286bcc94f7202a6ff81b66707424a9bd"> 411</a></span> <a class="code" href="class_element.html">Element</a>* <a class="code" href="class_transformer.html#a286bcc94f7202a6ff81b66707424a9bd">Transformer::GetCopy</a>()</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <a class="code" href="class_transformer.html">Transformer</a>* copy = <span class="keyword">new</span> <a class="code" href="class_transformer.html">Transformer</a>();</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  *copy = *<span class="keyword">this</span>;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">return</span> copy;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="class_transformer.html#a169064f996341f8f8b6881c6a3909f0b"> 418</a></span> wxString <a class="code" href="class_transformer.html#a169064f996341f8f8b6881c6a3909f0b">Transformer::GetTipText</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="keyword"></span>{</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  wxString tipText = m_electricalData.name;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  wxString primVoltage = StringFromDouble(m_electricalData.primaryNominalVoltage);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">switch</span>(m_electricalData.primaryNominalVoltageUnit) {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  primVoltage += _(<span class="stringliteral">" V"</span>);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  primVoltage += _(<span class="stringliteral">" kV"</span>);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  wxString secVoltage = StringFromDouble(m_electricalData.secondaryNominalVoltage);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">switch</span>(m_electricalData.secondaryNominalVoltageUnit) {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  secVoltage += _(<span class="stringliteral">" V"</span>);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  secVoltage += _(<span class="stringliteral">" kV"</span>);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span> </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  tipText += <span class="stringliteral">"\n"</span> + primVoltage + <span class="stringliteral">" / "</span> + secVoltage;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">if</span>(m_online) {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  tipText += <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordtype">int</span> busNumber[2];</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  busNumber[0] = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[0])->GetElectricalData().number + 1;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  busNumber[1] = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(m_parentList[1])->GetElectricalData().number + 1;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span> </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  tipText += _(<span class="stringliteral">"\nP"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[0], busNumber[1]) +</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  wxString::FromDouble(m_electricalData.powerFlow[0].real(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  tipText += _(<span class="stringliteral">"\nQ"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[0], busNumber[1]) +</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  wxString::FromDouble(m_electricalData.powerFlow[0].imag(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  tipText += _(<span class="stringliteral">"\nP"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[1], busNumber[0]) +</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  wxString::FromDouble(m_electricalData.powerFlow[1].real(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  tipText += _(<span class="stringliteral">"\nQ"</span>) + wxString::Format(<span class="stringliteral">"(%d-%d) = "</span>, busNumber[1], busNumber[0]) +</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  wxString::FromDouble(m_electricalData.powerFlow[1].imag(), 5) + _(<span class="stringliteral">" p.u."</span>);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">return</span> tipText;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span> </div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> Transformer::GetPUElectricalData(<span class="keywordtype">double</span> systemBasePower)</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span> {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = m_electricalData;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordtype">double</span> transformerBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordtype">double</span> baseVoltage = 0.0;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">if</span>(data.baseVoltage == 0) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  baseVoltage = GetValueFromUnit(data.primaryNominalVoltage, data.primaryNominalVoltageUnit);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  baseVoltage = GetValueFromUnit(data.secondaryNominalVoltage, data.secondaryNominalVoltageUnit);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="keywordtype">double</span> systemBaseImpedance = (baseVoltage * baseVoltage) / systemBasePower;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordtype">double</span> transformerBaseImpedance = (baseVoltage * baseVoltage) / transformerBasePower;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="comment">// Resistance</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordtype">double</span> r = data.resistance;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="keywordflow">if</span>(data.resistanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.resistance = (r * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  data.resistance = r / systemBaseImpedance;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> </div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="comment">// Indutive reactance</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordtype">double</span> x = data.indReactance;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">if</span>(data.indReactanceUnit == <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>) {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.indReactance = (x * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  data.indReactance = x / systemBaseImpedance;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  }</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="comment">// Zero seq. resistance</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordtype">double</span> r0 = data.zeroResistance;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.zeroResistance = (r0 * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span> </div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="comment">// Zero seq. ind. reactance</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordtype">double</span> x0 = data.zeroIndReactance;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.zeroIndReactance = (x0 * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="comment">// Primary ground resistance</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="keywordtype">double</span> rgp = data.primaryGrndResistance;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.primaryGrndResistance = (rgp * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span> </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="comment">// Primary ground ind reactance</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordtype">double</span> xgp = data.primaryGrndReactance;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.primaryGrndReactance = (xgp * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span> </div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="comment">// Secondary ground resistance</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordtype">double</span> rgs = data.secondaryGrndResistance;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.secondaryGrndResistance = (rgs * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="comment">// Secondary ground ind reactance</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordtype">double</span> xgs = data.secondaryGrndReactance;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">if</span>(data.useTransformerPower) data.secondaryGrndReactance = (xgs * transformerBaseImpedance) / systemBaseImpedance;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">if</span>(!m_online) {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  data.powerFlow[0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  data.powerFlow[1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  data.faultCurrent[0][0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  data.faultCurrent[0][1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  data.faultCurrent[0][2] = std::complex<double>(0, 0);</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  data.faultCurrent[1][0] = std::complex<double>(0, 0);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  data.faultCurrent[1][1] = std::complex<double>(0, 0);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  data.faultCurrent[1][2] = std::complex<double>(0, 0);</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span> </div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="keywordflow">return</span> data;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span> }</div><div class="ttc" id="class_element_html_a5c75d8a6e28326dd568104a4d9d3473f"><div class="ttname"><a href="class_element.html#a5c75d8a6e28326dd568104a4d9d3473f">Element::GetAngle</a></div><div class="ttdeci">double GetAngle() const</div><div class="ttdoc">Get the element angle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00212">Element.h:212</a></div></div> <div class="ttc" id="class_transformer_html_a286bcc94f7202a6ff81b66707424a9bd"><div class="ttname"><a href="class_transformer.html#a286bcc94f7202a6ff81b66707424a9bd">Transformer::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00411">Transformer.cpp:411</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00030">PowerElement.h:30</a></div></div> +<div class="ttc" id="_transformer_8h_html"><div class="ttname"><a href="_transformer_8h.html">Transformer.h</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00052">Element.h:52</a></div></div> <div class="ttc" id="class_transformer_html_aaa6cc999eb77a94dafaec5debb4db3de"><div class="ttname"><a href="class_transformer.html#aaa6cc999eb77a94dafaec5debb4db3de">Transformer::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00196">Transformer.cpp:196</a></div></div> <div class="ttc" id="class_transformer_html_acb55f182a7f6d7af0feb6a94cb62af4f"><div class="ttname"><a href="class_transformer.html#acb55f182a7f6d7af0feb6a94cb62af4f">Transformer::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00280">Transformer.cpp:280</a></div></div> @@ -104,7 +105,7 @@ $(document).ready(function(){initNavTree('_transformer_8cpp_source.html','');}); <div class="ttc" id="class_transformer_form_html"><div class="ttname"><a href="class_transformer_form.html">TransformerForm</a></div><div class="ttdoc">Form to edit the transformer power data. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_form_8h_source.html#l00033">TransformerForm.h:33</a></div></div> <div class="ttc" id="class_transformer_html_a67f1e2686932700fe8a83fdc232ea1e8"><div class="ttname"><a href="class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8">Transformer::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00212">Transformer.cpp:212</a></div></div> <div class="ttc" id="_transformer_form_8h_html"><div class="ttname"><a href="_transformer_form_8h.html">TransformerForm.h</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="class_transformer_html_a328c419af15701734168c8db62eefa36"><div class="ttname"><a href="class_transformer.html#a328c419af15701734168c8db62eefa36">Transformer::SetPowerFlowDirection</a></div><div class="ttdeci">virtual void SetPowerFlowDirection(PowerFlowDirection pfDirection)</div><div class="ttdoc">Set the direction of the power flow. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00405">Transformer.cpp:405</a></div></div> <div class="ttc" id="class_transformer_html_a7e3cd54e20d795ab9b0b8533ce03b728"><div class="ttname"><a href="class_transformer.html#a7e3cd54e20d795ab9b0b8533ce03b728">Transformer::SetNominalVoltage</a></div><div class="ttdeci">virtual void SetNominalVoltage(std::vector< double > nominalVoltage, std::vector< ElectricalUnit > nominalVoltageUnit)</div><div class="ttdoc">Set nominal voltage of the element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00291">Transformer.cpp:291</a></div></div> <div class="ttc" id="class_transformer_html_adfe51a2198cfc10e1095af9c034681bd"><div class="ttname"><a href="class_transformer.html#adfe51a2198cfc10e1095af9c034681bd">Transformer::GetContextMenu</a></div><div class="ttdeci">virtual bool GetContextMenu(wxMenu &menu)</div><div class="ttdoc">Get the element contex menu. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00273">Transformer.cpp:273</a></div></div> @@ -115,7 +116,7 @@ $(document).ready(function(){initNavTree('_transformer_8cpp_source.html','');}); <div class="ttc" id="class_transformer_html_a327ff3cf9194c18049e4feac6761ebc0"><div class="ttname"><a href="class_transformer.html#a327ff3cf9194c18049e4feac6761ebc0">Transformer::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00105">Transformer.cpp:105</a></div></div> <div class="ttc" id="class_transformer_html_a4f9137e6190fb630167f671a0da51ab6"><div class="ttname"><a href="class_transformer.html#a4f9137e6190fb630167f671a0da51ab6">Transformer::SetNodeParent</a></div><div class="ttdeci">virtual bool SetNodeParent(Element *parent)</div><div class="ttdoc">Set a perent to the node. If all conditions are met, a new parent are added to the element and the po...</div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00341">Transformer.cpp:341</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740aad1f68b93664b1917fafc7cf9b7537d3">PF_NONE</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00079">PowerElement.h:79</a></div></div> -<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> +<div class="ttc" id="class_open_g_l_colour_html"><div class="ttname"><a href="class_open_g_l_colour.html">OpenGLColour</a></div><div class="ttdoc">Class to manage color of OpenGL. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00067">Element.h:67</a></div></div> <div class="ttc" id="class_transformer_html_a1e9e9ba48aa76bdd2ff2e973014ad422"><div class="ttname"><a href="class_transformer.html#a1e9e9ba48aa76bdd2ff2e973014ad422">Transformer::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00111">Transformer.cpp:111</a></div></div> <div class="ttc" id="class_transformer_html_aea52a4562ec5b4a79bf82b8ede32ecc6"><div class="ttname"><a href="class_transformer.html#aea52a4562ec5b4a79bf82b8ede32ecc6">Transformer::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8cpp_source.html#l00039">Transformer.cpp:39</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a></div><div class="ttdeci">PowerFlowDirection</div><div class="ttdoc">Direction of power flow arrows. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00078">PowerElement.h:78</a></div></div> @@ -123,9 +124,9 @@ $(document).ready(function(){initNavTree('_transformer_8cpp_source.html','');}); <div class="ttc" id="class_element_html_a536ad18a847dcc979c984b3cb287f238"><div class="ttname"><a href="class_element.html#a536ad18a847dcc979c984b3cb287f238">Element::GetPosition</a></div><div class="ttdeci">wxPoint2DDouble GetPosition() const</div><div class="ttdoc">Get the element position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00187">Element.h:187</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740ad4f3902fa2c8a1fbd48375c553d40523">PF_BUS1_TO_BUS2</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00082">PowerElement.h:82</a></div></div> <div class="ttc" id="struct_transformer_electrical_data_html"><div class="ttname"><a href="struct_transformer_electrical_data.html">TransformerElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00037">Transformer.h:37</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> <div class="ttc" id="class_open_g_l_colour_html_a12119e58ae1bc7d6888224252695c066"><div class="ttname"><a href="class_open_g_l_colour.html#a12119e58ae1bc7d6888224252695c066">OpenGLColour::GetRGBA</a></div><div class="ttdeci">const GLdouble * GetRGBA() const</div><div class="ttdoc">Get colour in RGBA. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00101">Element.h:101</a></div></div> -<div class="ttc" id="class_branch_html"><div class="ttname"><a href="class_branch.html">Branch</a></div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00024">Branch.h:24</a></div></div> +<div class="ttc" id="class_branch_html"><div class="ttname"><a href="class_branch.html">Branch</a></div><div class="ttdoc">Abstract class for branch power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00031">Branch.h:31</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_transformer_8h.html b/docs/doxygen/html/_transformer_8h.html new file mode 100644 index 0000000..5b3917e --- /dev/null +++ b/docs/doxygen/html/_transformer_8h.html @@ -0,0 +1,136 @@ +<!-- HTML header for doxygen 1.8.13--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.13"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>Project/Transformer.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/x-mathjax-config"> + MathJax.Hub.Config({ + extensions: ["tex2jax.js"], + jax: ["input/TeX","output/HTML-CSS"], +}); +</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="logoHeader.png"/></td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.13 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_transformer_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#enum-members">Enumerations</a> </div> + <div class="headertitle"> +<div class="title">Transformer.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_branch_8h_source.html">Branch.h</a>"</code><br /> +</div> +<p><a href="_transformer_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="struct_transformer_electrical_data.html">TransformerElectricalData</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_transformer.html">Transformer</a></td></tr> +<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Two-winding transformer power element. <a href="class_transformer.html#details">More...</a><br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr class="memitem:ace6b3807048fabdaa8bbf0c8f8860d06"><td class="memItemLeft" align="right" valign="top"><a id="ace6b3807048fabdaa8bbf0c8f8860d06"></a>enum  </td><td class="memItemRight" valign="bottom"><b>TransformerConnection</b> { <br /> +  <b>GWYE_GWYE</b> = 0, +<b>WYE_GWYE</b>, +<b>GWYE_WYE</b>, +<b>WYE_WYE</b>, +<br /> +  <b>DELTA_GWYE</b>, +<b>DELTA_WYE</b>, +<b>GWYE_DELTA</b>, +<b>WYE_DELTA</b>, +<br /> +  <b>DELTA_DELTA</b> +<br /> + }</td></tr> +<tr class="separator:ace6b3807048fabdaa8bbf0c8f8860d06"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_transformer_8h.html">Transformer.h</a></li> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> + </ul> +</div> +</body> +</html> diff --git a/docs/doxygen/html/_transformer_8h.js b/docs/doxygen/html/_transformer_8h.js new file mode 100644 index 0000000..0cb13fd --- /dev/null +++ b/docs/doxygen/html/_transformer_8h.js @@ -0,0 +1,16 @@ +var _transformer_8h = +[ + [ "TransformerElectricalData", "struct_transformer_electrical_data.html", "struct_transformer_electrical_data" ], + [ "Transformer", "class_transformer.html", "class_transformer" ], + [ "TransformerConnection", "_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06", [ + [ "GWYE_GWYE", "_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06a4f417627b015a8fed7b3ebf0f8e0fdfe", null ], + [ "WYE_GWYE", "_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06afc14c39ecae15fd6b25da581ab530ed5", null ], + [ "GWYE_WYE", "_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06add500826fddc4ad0105a8d88bb8e8da7", null ], + [ "WYE_WYE", "_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06ac9f8b56645f38eb0620cb69a914f3095", null ], + [ "DELTA_GWYE", "_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06a53db8ed07cc0e8c5b6cd377bf2a37e4f", null ], + [ "DELTA_WYE", "_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06acdee63c4174046055f9c960c38178741", null ], + [ "GWYE_DELTA", "_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06a18d745d4045365a77ecf886610922218", null ], + [ "WYE_DELTA", "_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06ae69f44260b5da3ed29f47164d6b97de0", null ], + [ "DELTA_DELTA", "_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06a5f05b987519c9c5bdc532be11940c61a", null ] + ] ] +];
\ No newline at end of file diff --git a/docs/doxygen/html/_transformer_8h_source.html b/docs/doxygen/html/_transformer_8h_source.html index 7e5bca5..7a44441 100644 --- a/docs/doxygen/html/_transformer_8h_source.html +++ b/docs/doxygen/html/_transformer_8h_source.html @@ -88,22 +88,23 @@ $(document).ready(function(){initNavTree('_transformer_8h_source.html','');}); <div class="title">Transformer.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef TRANSFORMER_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define TRANSFORMER_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "Branch.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_transformer_form.html">TransformerForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">enum</span> TransformerConnection {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  GWYE_GWYE = 0,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  WYE_GWYE,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  GWYE_WYE,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  WYE_WYE,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  DELTA_GWYE,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  DELTA_WYE,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  GWYE_DELTA,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  WYE_DELTA,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  DELTA_DELTA</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> };</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="struct_transformer_electrical_data.html"> 37</a></span> <span class="keyword">struct </span><a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="comment">// General</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">double</span> primaryNominalVoltage = 138.0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> primaryNominalVoltageUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">double</span> secondaryNominalVoltage = 138.0;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> secondaryNominalVoltageUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">int</span> baseVoltage = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> nominalPower = 100.0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> resistance = 0.0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">double</span> indReactance = 1.0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  TransformerConnection connection = GWYE_GWYE;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">double</span> turnsRatio = 1.0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">double</span> phaseShift = 0.0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">bool</span> useTransformerPower = <span class="keyword">false</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// Power flow (p.u.)</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  std::complex<double> current[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::complex<double> powerFlow[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">double</span> zeroResistance = 0.0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">double</span> zeroIndReactance = 1.0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">double</span> primaryGrndResistance = 0.0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">double</span> primaryGrndReactance = 0.0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">double</span> secondaryGrndResistance = 0.0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">double</span> secondaryGrndReactance = 0.0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::complex<double> faultCurrent[2][3];</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> };</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="class_transformer.html"> 71</a></span> <span class="keyword">class </span><a class="code" href="class_transformer.html">Transformer</a> : <span class="keyword">public</span> <a class="code" href="class_branch.html">Branch</a></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="class_transformer.html">Transformer</a>();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="class_transformer.html">Transformer</a>(wxString name);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_transformer.html">Transformer</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> AddParent(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Intersects(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Rotate(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Move(wxPoint2DDouble position);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> MoveNode(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> StartMove(wxPoint2DDouble position);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RotateNode(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> SetNodeParent(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetPowerFlowDirection(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">virtual</span> <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> GetElectricalData()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">virtual</span> <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemBasePower);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricaData(<a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordtype">void</span> UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> m_electricalData;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> };</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor">#endif // TRANSFORMER_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<a href="_transformer_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef TRANSFORMER_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define TRANSFORMER_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "<a class="code" href="_branch_8h.html">Branch.h</a>"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_transformer_form.html">TransformerForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">enum</span> TransformerConnection {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  GWYE_GWYE = 0,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  WYE_GWYE,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  GWYE_WYE,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  WYE_WYE,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  DELTA_GWYE,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  DELTA_WYE,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  GWYE_DELTA,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  WYE_DELTA,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  DELTA_DELTA</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> };</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="struct_transformer_electrical_data.html"> 37</a></span> <span class="keyword">struct </span><a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="comment">// General</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  wxString name = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordtype">double</span> primaryNominalVoltage = 138.0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> primaryNominalVoltageUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordtype">double</span> secondaryNominalVoltage = 138.0;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> secondaryNominalVoltageUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">int</span> baseVoltage = 0;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordtype">double</span> nominalPower = 100.0;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">double</span> resistance = 0.0;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">double</span> indReactance = 1.0;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  TransformerConnection connection = GWYE_GWYE;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordtype">double</span> turnsRatio = 1.0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">double</span> phaseShift = 0.0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordtype">bool</span> useTransformerPower = <span class="keyword">false</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="comment">// Power flow (p.u.)</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  std::complex<double> current[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  std::complex<double> powerFlow[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Fault</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">double</span> zeroResistance = 0.0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordtype">double</span> zeroIndReactance = 1.0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordtype">double</span> primaryGrndResistance = 0.0;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordtype">double</span> primaryGrndReactance = 0.0;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordtype">double</span> secondaryGrndResistance = 0.0;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordtype">double</span> secondaryGrndReactance = 0.0;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="comment">// p.u. fault data</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  std::complex<double> faultCurrent[2][3];</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> };</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="class_transformer.html"> 78</a></span> <span class="keyword">class </span><a class="code" href="class_transformer.html">Transformer</a> : <span class="keyword">public</span> <a class="code" href="class_branch.html">Branch</a></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="class_transformer.html">Transformer</a>();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="class_transformer.html">Transformer</a>(wxString name);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_transformer.html">Transformer</a>();</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">virtual</span> <a class="code" href="class_element.html">Element</a>* GetCopy();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> AddParent(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Contains(wxPoint2DDouble position) <span class="keyword">const</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Draw(wxPoint2DDouble translation, <span class="keywordtype">double</span> scale) <span class="keyword">const</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> Intersects(wxRect2DDouble rect) <span class="keyword">const</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Rotate(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> Move(wxPoint2DDouble position);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> MoveNode(<a class="code" href="class_element.html">Element</a>* parent, wxPoint2DDouble position);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> StartMove(wxPoint2DDouble position);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> GetContextMenu(wxMenu& menu);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">virtual</span> wxString GetTipText() <span class="keyword">const</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> RotateNode(<a class="code" href="class_element.html">Element</a>* parent, <span class="keywordtype">bool</span> clockwise);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> SetNodeParent(<a class="code" href="class_element.html">Element</a>* parent);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetPowerFlowDirection(<a class="code" href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a> pfDirection);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ShowForm(wxWindow* parent, <a class="code" href="class_element.html">Element</a>* element);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">virtual</span> <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> GetElectricalData()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_electricalData; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">virtual</span> <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> GetPUElectricalData(<span class="keywordtype">double</span> systemBasePower);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetElectricaData(<a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> electricalData) { m_electricalData = electricalData; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordtype">void</span> UpdatePowerFlowArrowsPosition();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> m_electricalData;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> };</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#endif // TRANSFORMER_H</span></div><div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00031">PowerElement.h:31</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220cca"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a></div><div class="ttdeci">ElectricalUnit</div><div class="ttdoc">Electrical units. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00028">PowerElement.h:28</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> <div class="ttc" id="class_transformer_form_html"><div class="ttname"><a href="class_transformer_form.html">TransformerForm</a></div><div class="ttdoc">Form to edit the transformer power data. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_form_8h_source.html#l00033">TransformerForm.h:33</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00039">PowerElement.h:39</a></div></div> +<div class="ttc" id="_branch_8h_html"><div class="ttname"><a href="_branch_8h.html">Branch.h</a></div></div> <div class="ttc" id="_power_element_8h_html_a467d3005d31dde0ba0e52cf8e233e740"><div class="ttname"><a href="_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740">PowerFlowDirection</a></div><div class="ttdeci">PowerFlowDirection</div><div class="ttdoc">Direction of power flow arrows. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00078">PowerElement.h:78</a></div></div> <div class="ttc" id="struct_transformer_electrical_data_html"><div class="ttname"><a href="struct_transformer_electrical_data.html">TransformerElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00037">Transformer.h:37</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> -<div class="ttc" id="class_branch_html"><div class="ttname"><a href="class_branch.html">Branch</a></div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00024">Branch.h:24</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> +<div class="ttc" id="class_branch_html"><div class="ttname"><a href="class_branch.html">Branch</a></div><div class="ttdoc">Abstract class for branch power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_branch_8h_source.html#l00031">Branch.h:31</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> - <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><b>Transformer.h</b></li> + <li class="navelem"><a class="el" href="dir_ffd1f789ec7bd0a45fc6ad92579c5070.html">Project</a></li><li class="navelem"><a class="el" href="_transformer_8h.html">Transformer.h</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li> diff --git a/docs/doxygen/html/_transformer_form_8cpp_source.html b/docs/doxygen/html/_transformer_form_8cpp_source.html index 20a3fa2..0ef5881 100644 --- a/docs/doxygen/html/_transformer_form_8cpp_source.html +++ b/docs/doxygen/html/_transformer_form_8cpp_source.html @@ -88,8 +88,9 @@ $(document).ready(function(){initNavTree('_transformer_form_8cpp_source.html','' <div class="title">TransformerForm.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_transformer_form_8h.html">TransformerForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_switching_form_8h.html">SwitchingForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "Transformer.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> TransformerForm::TransformerForm(wxWindow* parent, <a class="code" href="class_transformer.html">Transformer</a>* transformer) : <a class="code" href="class_transformer_form_base.html">TransformerFormBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_choiceResistance->SetString(1, L<span class="stringliteral">'\u03A9'</span>);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_choiceReactance->SetString(1, L<span class="stringliteral">'\u03A9'</span>);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="comment">// Reset connections choice labels (to be translated)</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_choiceConnection->SetString(0, _(<span class="stringliteral">"Grounded Wye - Grounded Wye"</span>));</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_choiceConnection->SetString(1, _(<span class="stringliteral">"Wye - Grounded Wye"</span>));</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_choiceConnection->SetString(2, _(<span class="stringliteral">"Grounded Wye - Wye"</span>));</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_choiceConnection->SetString(3, _(<span class="stringliteral">"Wye - Wye"</span>));</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choiceConnection->SetString(4, _(<span class="stringliteral">"Delta - Grounded Wye"</span>));</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_choiceConnection->SetString(5, _(<span class="stringliteral">"Delta - Wye"</span>));</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_choiceConnection->SetString(6, _(<span class="stringliteral">"Grounded Wye - Delta"</span>));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_choiceConnection->SetString(7, _(<span class="stringliteral">"Wye - Delta"</span>));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_choiceConnection->SetString(8, _(<span class="stringliteral">"Delta - Delta"</span>));</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  Layout();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_parent = parent;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_transformer = transformer;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transformer->GetElectricalData();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  wxString primVoltStr = <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.primaryNominalVoltage);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">switch</span>(data.primaryNominalVoltageUnit) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  primVoltStr += <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  primVoltStr += <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  wxString secVoltStr = <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.secondaryNominalVoltage);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">switch</span>(data.secondaryNominalVoltageUnit) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  secVoltStr += <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  secVoltStr += <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_staticTextNominalVoltageValue->SetLabel(wxString::Format(<span class="stringliteral">"%s / %s"</span>, primVoltStr, secVoltStr));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_choiceBaseVoltage->SetString(0, primVoltStr);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_choiceBaseVoltage->SetString(1, secVoltStr);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_choiceBaseVoltage->SetSelection(data.baseVoltage);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_textCtrlNominalPower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.nominalPower));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">switch</span>(data.nominalPowerUnit) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_choiceNominalPower->SetSelection(0);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_choiceNominalPower->SetSelection(1);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_choiceNominalPower->SetSelection(2);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_textCtrlResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.resistance));</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">switch</span>(data.resistanceUnit) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_choiceResistance->SetSelection(0);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>: {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_choiceResistance->SetSelection(1);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_textCtrlReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.indReactance));</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">switch</span>(data.indReactanceUnit) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_choiceReactance->SetSelection(0);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>: {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_choiceReactance->SetSelection(1);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_choiceConnection->SetSelection(data.connection);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_textCtrlTurnRatio->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.turnsRatio));</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_textCtrlPhaseShift->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.phaseShift));</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_checkUseTransformerPower->SetValue(data.useTransformerPower);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_textCtrlZeroResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.zeroResistance));</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_textCtrlZeroReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.zeroIndReactance));</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_textCtrlPrimResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.primaryGrndResistance));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_textCtrlPrimReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.primaryGrndReactance));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_textCtrlSecResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.secondaryGrndResistance));</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_textCtrlSecReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.secondaryGrndReactance));</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> TransformerForm::~TransformerForm() {}</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keywordtype">void</span> TransformerForm::OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keywordtype">void</span> TransformerForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keywordtype">void</span> TransformerForm::OnStabilityButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_transformer);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  swForm.SetTitle(_(<span class="stringliteral">"Transfomer: Switching"</span>));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  swForm.ShowModal();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="keywordtype">bool</span> TransformerForm::ValidateData()</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = m_transformer->GetElectricalData();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  data.baseVoltage = m_choiceBaseVoltage->GetSelection();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlNominalPower->GetValue(), data.nominalPower,</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Nominal power\"."</span>)))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">switch</span>(m_choiceNominalPower->GetSelection()) {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlResistance->GetValue(), data.resistance,</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Resistance\"."</span>)))</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">switch</span>(m_choiceResistance->GetSelection()) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlReactance->GetValue(), data.indReactance,</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Indutive reactance\"."</span>)))</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">switch</span>(m_choiceReactance->GetSelection()) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">switch</span>(m_choiceConnection->GetSelection()) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  data.connection = GWYE_GWYE;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  data.connection = WYE_GWYE;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  data.connection = GWYE_WYE;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  data.connection = WYE_WYE;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">case</span> 4: {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  data.connection = DELTA_GWYE;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">case</span> 5: {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  data.connection = DELTA_WYE;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">case</span> 6: {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  data.connection = GWYE_DELTA;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">case</span> 7: {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  data.connection = WYE_DELTA;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">case</span> 8: {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  data.connection = DELTA_DELTA;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlTurnRatio->GetValue(), data.turnsRatio,</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Turns ratio\"."</span>)))</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlPhaseShift->GetValue(), data.phaseShift,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Phase shift\"."</span>)))</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  data.useTransformerPower = m_checkUseTransformerPower->GetValue();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero sequence resistance\"."</span>)))</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroIndReactance,</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero sequence indutive reactance\"."</span>)))</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlPrimResistance->GetValue(), data.primaryGrndResistance,</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Primary ground resistance\"."</span>)))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlPrimReactance->GetValue(), data.primaryGrndReactance,</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Primary ground reactance\"."</span>)))</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlSecResistance->GetValue(), data.secondaryGrndResistance,</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Secondary ground resistance\"."</span>)))</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlSecReactance->GetValue(), data.secondaryGrndReactance,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Secondary ground reactance\"."</span>)))</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  m_transformer->SetElectricaData(data);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> }</div><div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00043">PowerElement.h:43</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_transformer_form_8h.html">TransformerForm.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_switching_form_8h.html">SwitchingForm.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_transformer_8h.html">Transformer.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> TransformerForm::TransformerForm(wxWindow* parent, <a class="code" href="class_transformer.html">Transformer</a>* transformer) : <a class="code" href="class_transformer_form_base.html">TransformerFormBase</a>(parent)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  m_choiceResistance->SetString(1, L<span class="stringliteral">'\u03A9'</span>);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  m_choiceReactance->SetString(1, L<span class="stringliteral">'\u03A9'</span>);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="comment">// Reset connections choice labels (to be translated)</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  m_choiceConnection->SetString(0, _(<span class="stringliteral">"Grounded Wye - Grounded Wye"</span>));</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  m_choiceConnection->SetString(1, _(<span class="stringliteral">"Wye - Grounded Wye"</span>));</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  m_choiceConnection->SetString(2, _(<span class="stringliteral">"Grounded Wye - Wye"</span>));</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  m_choiceConnection->SetString(3, _(<span class="stringliteral">"Wye - Wye"</span>));</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  m_choiceConnection->SetString(4, _(<span class="stringliteral">"Delta - Grounded Wye"</span>));</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  m_choiceConnection->SetString(5, _(<span class="stringliteral">"Delta - Wye"</span>));</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  m_choiceConnection->SetString(6, _(<span class="stringliteral">"Grounded Wye - Delta"</span>));</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  m_choiceConnection->SetString(7, _(<span class="stringliteral">"Wye - Delta"</span>));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  m_choiceConnection->SetString(8, _(<span class="stringliteral">"Delta - Delta"</span>));</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  SetSize(GetBestSize());</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  Layout();</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  m_parent = parent;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  m_transformer = transformer;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = transformer->GetElectricalData();</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  m_textCtrlName->SetValue(data.name);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  wxString primVoltStr = <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.primaryNominalVoltage);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">switch</span>(data.primaryNominalVoltageUnit) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  primVoltStr += <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  primVoltStr += <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  wxString secVoltStr = <a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.secondaryNominalVoltage);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">switch</span>(data.secondaryNominalVoltageUnit) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a>: {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  secVoltStr += <span class="stringliteral">" V"</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a>: {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  secVoltStr += <span class="stringliteral">" kV"</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  m_staticTextNominalVoltageValue->SetLabel(wxString::Format(<span class="stringliteral">"%s / %s"</span>, primVoltStr, secVoltStr));</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  m_choiceBaseVoltage->SetString(0, primVoltStr);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  m_choiceBaseVoltage->SetString(1, secVoltStr);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  m_choiceBaseVoltage->SetSelection(data.baseVoltage);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  m_textCtrlNominalPower->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.nominalPower));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">switch</span>(data.nominalPowerUnit) {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>: {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  m_choiceNominalPower->SetSelection(0);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>: {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  m_choiceNominalPower->SetSelection(1);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>: {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  m_choiceNominalPower->SetSelection(2);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  m_textCtrlResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.resistance));</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">switch</span>(data.resistanceUnit) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  m_choiceResistance->SetSelection(0);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>: {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  m_choiceResistance->SetSelection(1);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  m_textCtrlReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.indReactance));</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">switch</span>(data.indReactanceUnit) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>: {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  m_choiceReactance->SetSelection(0);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">case</span> <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>: {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  m_choiceReactance->SetSelection(1);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  m_choiceConnection->SetSelection(data.connection);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  m_textCtrlTurnRatio->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.turnsRatio));</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  m_textCtrlPhaseShift->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.phaseShift));</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_checkUseTransformerPower->SetValue(data.useTransformerPower);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  m_textCtrlZeroResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.zeroResistance));</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  m_textCtrlZeroReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.zeroIndReactance));</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  m_textCtrlPrimResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.primaryGrndResistance));</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  m_textCtrlPrimReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.primaryGrndReactance));</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  m_textCtrlSecResistance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.secondaryGrndResistance));</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  m_textCtrlSecReactance->SetValue(<a class="code" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">Transformer::StringFromDouble</a>(data.secondaryGrndReactance));</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> TransformerForm::~TransformerForm() {}</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="keywordtype">void</span> TransformerForm::OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keywordtype">void</span> TransformerForm::OnOKButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span> {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span>(ValidateData()) EndModal(wxID_OK);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="keywordtype">void</span> TransformerForm::OnStabilityButtonClick(wxCommandEvent& event)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(ValidateData()) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="class_switching_form.html">SwitchingForm</a> swForm(m_parent, m_transformer);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  swForm.SetTitle(_(<span class="stringliteral">"Transfomer: Switching"</span>));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  swForm.ShowModal();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  EndModal(wxID_OK);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="keywordtype">bool</span> TransformerForm::ValidateData()</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="struct_transformer_electrical_data.html">TransformerElectricalData</a> data = m_transformer->GetElectricalData();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  data.name = m_textCtrlName->GetValue();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  data.baseVoltage = m_choiceBaseVoltage->GetSelection();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlNominalPower->GetValue(), data.nominalPower,</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Nominal power\"."</span>)))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">switch</span>(m_choiceNominalPower->GetSelection()) {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  data.nominalPowerUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa0120ee2353bba9baf0151108a299f6ae">UNIT_MVA</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlResistance->GetValue(), data.resistance,</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Resistance\"."</span>)))</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">switch</span>(m_choiceResistance->GetSelection()) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  data.resistanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlReactance->GetValue(), data.indReactance,</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Indutive reactance\"."</span>)))</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">switch</span>(m_choiceReactance->GetSelection()) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  data.indReactanceUnit = <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">switch</span>(m_choiceConnection->GetSelection()) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordflow">case</span> 0: {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  data.connection = GWYE_GWYE;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">case</span> 1: {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  data.connection = WYE_GWYE;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">case</span> 2: {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  data.connection = GWYE_WYE;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">case</span> 3: {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  data.connection = WYE_WYE;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">case</span> 4: {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  data.connection = DELTA_GWYE;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">case</span> 5: {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  data.connection = DELTA_WYE;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">case</span> 6: {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  data.connection = GWYE_DELTA;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">case</span> 7: {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  data.connection = WYE_DELTA;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">case</span> 8: {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  data.connection = DELTA_DELTA;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlTurnRatio->GetValue(), data.turnsRatio,</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Turns ratio\"."</span>)))</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlPhaseShift->GetValue(), data.phaseShift,</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Phase shift\"."</span>)))</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  data.useTransformerPower = m_checkUseTransformerPower->GetValue();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero sequence resistance\"."</span>)))</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroIndReactance,</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Zero sequence indutive reactance\"."</span>)))</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlPrimResistance->GetValue(), data.primaryGrndResistance,</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Primary ground resistance\"."</span>)))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlPrimReactance->GetValue(), data.primaryGrndReactance,</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Primary ground reactance\"."</span>)))</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlSecResistance->GetValue(), data.secondaryGrndResistance,</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Secondary ground resistance\"."</span>)))</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span>(!m_transformer->DoubleFromString(m_parent, m_textCtrlSecReactance->GetValue(), data.secondaryGrndReactance,</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  _(<span class="stringliteral">"Value entered incorrectly in the field \"Secondary ground reactance\"."</span>)))</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  m_transformer->SetElectricaData(data);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> }</div><div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaafdab9cc53a2b7b33ae61c568006d1cec">UNIT_OHM</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00043">PowerElement.h:43</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa8cac20ac9e816437ad8487400bb9f027">UNIT_V</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00030">PowerElement.h:30</a></div></div> +<div class="ttc" id="_transformer_8h_html"><div class="ttname"><a href="_transformer_8h.html">Transformer.h</a></div></div> <div class="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdoc">Form to edit the switching data of power elements for electromechanical transient studies...</div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00032">SwitchingForm.h:32</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaa29f80755e4c0ce17e1e4481182e548da">UNIT_kV</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00031">PowerElement.h:31</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaad22bbe1d526c8b9cac230fa6dca82b58">UNIT_PU</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00029">PowerElement.h:29</a></div></div> @@ -101,7 +102,7 @@ $(document).ready(function(){initNavTree('_transformer_form_8cpp_source.html','' <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaab199aa3533e82846acc8c78847d126c9">UNIT_VA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00037">PowerElement.h:37</a></div></div> <div class="ttc" id="struct_transformer_electrical_data_html"><div class="ttname"><a href="struct_transformer_electrical_data.html">TransformerElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00037">Transformer.h:37</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220ccaac27252874d11b1bc352981ad491802f5">UNIT_kVA</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00038">PowerElement.h:38</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_transformer_form_8h_source.html b/docs/doxygen/html/_transformer_form_8h_source.html index 2f3c75a..081ffc9 100644 --- a/docs/doxygen/html/_transformer_form_8h_source.html +++ b/docs/doxygen/html/_transformer_form_8h_source.html @@ -91,7 +91,7 @@ $(document).ready(function(){initNavTree('_transformer_form_8h_source.html',''); <a href="_transformer_form_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef TRANSFORMERFORM_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define TRANSFORMERFORM_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "ElementForm.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span><a class="code" href="class_switching_form.html">SwitchingForm</a>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span><a class="code" href="class_transformer.html">Transformer</a>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="class_transformer_form.html"> 33</a></span> <span class="keyword">class </span><a class="code" href="class_transformer_form.html">TransformerForm</a> : <span class="keyword">public</span> <a class="code" href="class_transformer_form_base.html">TransformerFormBase</a></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="class_transformer_form.html">TransformerForm</a>(wxWindow* parent, <a class="code" href="class_transformer.html">Transformer</a>* transformer);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_transformer_form.html">TransformerForm</a>();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordtype">bool</span> ValidateData();</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnCancelButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnOKButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnStabilityButtonClick(wxCommandEvent& event);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  wxWindow* m_parent = NULL;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="class_transformer.html">Transformer</a>* m_transformer = NULL;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#endif // TRANSFORMERFORM_H</span></div><div class="ttc" id="class_switching_form_html"><div class="ttname"><a href="class_switching_form.html">SwitchingForm</a></div><div class="ttdoc">Form to edit the switching data of power elements for electromechanical transient studies...</div><div class="ttdef"><b>Definition:</b> <a href="_switching_form_8h_source.html#l00032">SwitchingForm.h:32</a></div></div> <div class="ttc" id="class_transformer_form_html"><div class="ttname"><a href="class_transformer_form.html">TransformerForm</a></div><div class="ttdoc">Form to edit the transformer power data. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_form_8h_source.html#l00033">TransformerForm.h:33</a></div></div> <div class="ttc" id="class_transformer_form_base_html"><div class="ttname"><a href="class_transformer_form_base.html">TransformerFormBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_form_8h_source.html#l00453">ElementForm.h:453</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_workspace_8cpp_source.html b/docs/doxygen/html/_workspace_8cpp_source.html index 8e2926a..6740df2 100644 --- a/docs/doxygen/html/_workspace_8cpp_source.html +++ b/docs/doxygen/html/_workspace_8cpp_source.html @@ -88,19 +88,21 @@ $(document).ready(function(){initNavTree('_workspace_8cpp_source.html','');}); <div class="title">Workspace.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_workspace_8h.html">Workspace.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_camera_8h.html">Camera.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//#include "Bus.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "Line.h"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "Transformer.h"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "SyncGenerator.h"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "IndMotor.h"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "SyncMotor.h"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "Load.h"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "Inductor.h"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "Capacitor.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "ElementDataObject.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "Text.h"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "PowerFlow.h"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="_fault_8h.html">Fault.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="_electromechanical_8h.html">Electromechanical.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "ElementPlotData.h"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="_chart_view_8h.html">ChartView.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "PropertiesData.h"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// Workspace</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> Workspace::Workspace() : <a class="code" href="class_workspace_base.html">WorkspaceBase</a>(NULL) {}</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> Workspace::Workspace(wxWindow* parent, wxString name, wxStatusBar* statusBar) : <a class="code" href="class_workspace_base.html">WorkspaceBase</a>(parent)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_timer->Start();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_name = name;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_statusBar = statusBar;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_glContext = <span class="keyword">new</span> wxGLContext(m_glCanvas);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_camera = <span class="keyword">new</span> <a class="code" href="class_camera.html">Camera</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_selectionRect = wxRect2DDouble(0, 0, 0, 0);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < NUM_ELEMENTS; ++i) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_elementNumber[i] = 1;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> widths[4] = {-3, -1, 100, 100};</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_statusBar->SetStatusWidths(4, widths);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_properties = <span class="keyword">new</span> <a class="code" href="class_properties_data.html">PropertiesData</a>();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> Workspace::~Workspace()</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(*it) <span class="keyword">delete</span> *it;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(*it) <span class="keyword">delete</span> *it;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(m_camera) <span class="keyword">delete</span> m_camera;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(m_glContext) <span class="keyword">delete</span> m_glContext;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span>(m_tipWindow) <span class="keyword">delete</span> m_tipWindow;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span>(m_properties) <span class="keyword">delete</span> m_properties;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keywordtype">void</span> Workspace::OnPaint(wxPaintEvent& event)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  wxPaintDC dc(m_glCanvas);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_glContext->SetCurrent(*m_glCanvas);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  SetViewport();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Set GLCanvas scale and translation.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); <span class="comment">// Scale</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  glTranslated(m_camera->GetTranslation().m_x, m_camera->GetTranslation().m_y, 0.0); <span class="comment">// Translation</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// Draw</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Elements</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  element-><a class="code" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Draw</a>(m_camera->GetTranslation(), m_camera->GetScale());</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Texts</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(); it != m_textList.end(); ++it) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  text->Draw(m_camera->GetTranslation(), m_camera->GetScale());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// Selection rectangle</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  glLineWidth(1.0);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  glColor4d(0.0, 0.5, 1.0, 1.0);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  glBegin(GL_LINE_LOOP);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  glEnd();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  glColor4d(0.0, 0.5, 1.0, 0.3);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  glBegin(GL_QUADS);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  glEnd();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  glFlush(); <span class="comment">// Sends all pending information directly to the GPU.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_glCanvas->SwapBuffers();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keywordtype">void</span> Workspace::SetViewport()</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  glClearColor(1.0, 1.0, 1.0, 1.0); <span class="comment">// White background.</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  glClear(GL_COLOR_BUFFER_BIT);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  glDisable(GL_DEPTH_TEST);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  glEnable(GL_COLOR_MATERIAL);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  glEnable(GL_BLEND);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  glEnable(GL_LINE_SMOOTH);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">double</span> width = m_glCanvas->GetSize().x - 1;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">double</span> height = m_glCanvas->GetSize().y - 1;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// Viewport fit the screen.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  glViewport(0, 0, width, height);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  glMatrixMode(GL_PROJECTION);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  glLoadIdentity();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  gluOrtho2D(0.0, width, height, 0.0);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  glMatrixMode(GL_MODELVIEW);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  glLoadIdentity();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="keywordtype">void</span> Workspace::OnLeftClickDown(wxMouseEvent& event)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  wxPoint clickPoint = <span class="keyword">event</span>.GetPosition();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordtype">bool</span> foundElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="class_element.html">Element</a>* newElement = NULL;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordtype">bool</span> showNewElementForm = <span class="keyword">false</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordtype">bool</span> clickOnSwitch = <span class="keyword">false</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT_TEXT || m_mode == MODE_PASTE || m_mode == MODE_DRAG_PASTE) {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode == MODE_INSERT || m_mode == MODE_DRAG_INSERT || m_mode == MODE_DRAG_INSERT_TEXT) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// Get the last element inserted on the list.</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  newElement = *(m_elementList.end() - 1);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// Clicked in any element.</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="comment">// Click at a bus.</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*element) == <span class="keyword">typeid</span>(<a class="code" href="class_bus.html">Bus</a>)) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">// Select the bus.</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  foundElement = <span class="keyword">true</span>; <span class="comment">// Element found.</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">// Add the new element's parent. If the element being inserted returns true, back to</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// edit mode.</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span>(newElement-><a class="code" href="class_element.html#a569178e9138490a981511a644536c0f9">AddParent</a>(element, m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  ValidateElementsVoltages();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_timer->Stop();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  showNewElementForm = <span class="keyword">true</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// The line element can have an indefined number of points.</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*newElement) == <span class="keyword">typeid</span>(<a class="code" href="class_line.html">Line</a>)) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  newElement-><a class="code" href="class_element.html#aa40c60c03d6a76639d8c6f6bab86720e">AddPoint</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordtype">bool</span> clickPickbox = <span class="keyword">false</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="class_power_element.html">PowerElement</a>* element = *it;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>(); <span class="comment">// Reset pickbox state.</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// Set movement initial position (not necessarily will be moved).</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// Click in selected element node.</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#a95b4f7e9341883ec39d0201148afffb4">NodeContains</a>(m_camera->ScreenToWorld(clickPoint)) != 0 && element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  m_mode = MODE_MOVE_NODE;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  m_disconnectedElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// Click in an element.</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// Select and show pickbox.</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">// If pickbox contains the click, move the pickbox</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#af4815de7e7698ea116e8e2af51414050">PickboxContains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  m_mode = MODE_MOVE_PICKBOX;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  clickPickbox = <span class="keyword">true</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="comment">// If didn't found a pickbox, move the element</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span>(!clickPickbox) {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  m_mode = MODE_MOVE_ELEMENT;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// Click in a switch.</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(element-><a class="code" href="class_power_element.html#a789105cc7c170330e7daf2a0453fde6d">SwitchesContains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  element-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(element-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>() ? false : <span class="keyword">true</span>);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  clickOnSwitch = <span class="keyword">true</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">// Text element</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  text-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Contains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_mode = MODE_MOVE_ELEMENT;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  m_mode = MODE_SELECTION_RECT;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_startSelRect = m_camera->ScreenToWorld(clickPoint);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  Redraw();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  UpdateStatusBar();</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">if</span>(showNewElementForm) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span>(newElement) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  newElement-><a class="code" href="class_element.html#ae1652eded3ccbd241a783691117418b2">ShowForm</a>(<span class="keyword">this</span>, newElement);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">if</span>(m_continuousCalc) RunStaticStudies();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span>(clickOnSwitch && m_continuousCalc) RunStaticStudies();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="keywordtype">void</span> Workspace::OnLeftDoubleClick(wxMouseEvent& event)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordtype">bool</span> elementEdited = <span class="keyword">false</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordtype">bool</span> clickOnSwitch = <span class="keyword">false</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <a class="code" href="class_power_element.html">PowerElement</a>* element = *it;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// Click in an element.</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordtype">bool</span> elementIsBus = <span class="keyword">false</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="class_bus.html">Bus</a> oldBus;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <a class="code" href="class_bus.html">Bus</a>* currentBus = NULL;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span>((currentBus = dynamic_cast<Bus*>(element))) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  elementIsBus = <span class="keyword">true</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  oldBus = *currentBus;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  m_timer->Stop();</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  element-><a class="code" href="class_element.html#ae1652eded3ccbd241a783691117418b2">ShowForm</a>(<span class="keyword">this</span>, element);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  elementEdited = <span class="keyword">true</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="comment">// If the edited element is a bus and was changed the rated voltage, this voltage must be</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// propagated through the lines</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">if</span>(elementIsBus) {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// The voltage was changed</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">if</span>(oldBus.GetElectricalData().nominalVoltage != currentBus->GetElectricalData().nominalVoltage ||</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  oldBus.GetElectricalData().nominalVoltageUnit !=</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  currentBus->GetElectricalData().nominalVoltageUnit) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="comment">// Check if the bus has line as child.</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  std::vector<Element*> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itc = childList.begin(), itcEnd = childList.end(); itc != itcEnd; ++itc) {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="class_element.html">Element</a>* child = *itc;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*child) == <span class="keyword">typeid</span>(<a class="code" href="class_line.html">Line</a>)) {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Do you want to change the rated voltage of the path?"</span>),</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  _(<span class="stringliteral">"Warning"</span>), wxYES_NO | wxCENTRE | wxICON_WARNING);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span>(msgDialog.ShowModal() == wxID_YES)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  ValidateBusesVoltages(element);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keyword">auto</span> data = currentBus->GetElectricalData();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  data.nominalVoltage = oldBus.GetElectricalData().nominalVoltage;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  data.nominalVoltageUnit = oldBus.GetElectricalData().nominalVoltageUnit;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  currentBus->SetElectricalData(data);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  ValidateElementsVoltages();</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="comment">// Click in a switch.</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(element-><a class="code" href="class_power_element.html#a789105cc7c170330e7daf2a0453fde6d">SwitchesContains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  element-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(element-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>() ? false : <span class="keyword">true</span>);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  clickOnSwitch = <span class="keyword">true</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="comment">// Text element</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(); it != m_textList.end(); ++it) {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  text->ShowForm(<span class="keyword">this</span>, GetElementList());</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">if</span>(elementEdited) {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  UpdateTextElements();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">if</span>(m_continuousCalc) RunStaticStudies();</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">if</span>(clickOnSwitch && m_continuousCalc) RunStaticStudies();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">if</span>(redraw) Redraw();</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  m_timer->Start();</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="keywordtype">void</span> Workspace::OnRightClickDown(wxMouseEvent& event)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span>(m_mode == MODE_EDIT) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="comment">// Show context menu.</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  wxMenu menu;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#a2a436b0497017a1c3d03dba5e59f037e">GetContextMenu</a>(menu)) {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  m_timer->Stop();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  menu.SetClientData(element);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  menu.Bind(wxEVT_COMMAND_MENU_SELECTED, &Workspace::OnPopupClick, <span class="keyword">this</span>);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  PopupMenu(&menu);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">if</span>(!menu.GetClientData()) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">if</span>(redraw) Redraw();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  m_timer->Start();</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="keywordtype">void</span> Workspace::OnLeftClickUp(wxMouseEvent& event)</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="comment">// This event (under certain conditions) deselects the elements and back to edit mode or select the elements using</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="comment">// the selection rectangle.</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordtype">bool</span> foundPickbox = <span class="keyword">false</span>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordtype">bool</span> findNewParent = <span class="keyword">false</span>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordtype">bool</span> updateVoltages = <span class="keyword">false</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keyword">auto</span> itnp = m_elementList.begin();</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="comment">// The user was moving a pickbox.</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span>(m_mode == MODE_MOVE_PICKBOX) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="comment">// Catch only the element that have the pickbox shown.</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abd94ea2ca7984d9a32d3ffd23837a323">IsPickboxShown</a>()) {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="comment">// If the element is a bus, check if a node is outside.</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*element) == <span class="keyword">typeid</span>(<a class="code" href="class_bus.html">Bus</a>)) {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="comment">// Get all the bus children.</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_elementList.size(); i++) {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="class_element.html">Element</a>* child = m_elementList[i];</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); j++) {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <a class="code" href="class_element.html">Element</a>* parent = child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[j];</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="comment">// The child have a parent that is the element.</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">if</span>(parent == element) {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  child-><a class="code" href="class_element.html#a499c3b52be27d2bf436a13b6f5353b9c">UpdateNodes</a>();</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  m_disconnectedElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">if</span>(m_mode == MODE_SELECTION_RECT) {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(m_selectionRect)) {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode == MODE_MOVE_NODE) {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_elementList.size(); i++) {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <a class="code" href="class_element.html">Element</a>* parent = m_elementList[i];</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*parent) == <span class="keyword">typeid</span>(<a class="code" href="class_bus.html">Bus</a>)) {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac7490a91f3edfff08584567cc84d86b5">SetNodeParent</a>(parent)) {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(element);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  findNewParent = <span class="keyword">true</span>;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  itnp = it;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  element-><a class="code" href="class_element.html#a8c16c17a6f22ffcdeb80ffa0ed27a72a">ResetNodes</a>();</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">// element->ResetNodes();</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">// Deselect</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">if</span>(!element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#af4815de7e7698ea116e8e2af51414050">PickboxContains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  foundPickbox = <span class="keyword">true</span>;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>();</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">// Text element</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(); it != m_textList.end(); it++) {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span>(m_mode == MODE_SELECTION_RECT) {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_text.html#a9923c820cd77b411257ba48beceafeaa">Intersects</a>(m_selectionRect)) {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">if</span>(!text-><a class="code" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">if</span>(findNewParent) {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  std::rotate(itnp, itnp + 1, m_elementList.end());</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  updateVoltages = <span class="keyword">true</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">if</span>(!foundPickbox) {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  SetCursor(wxCURSOR_ARROW);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">if</span>(m_mode != MODE_INSERT) {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">if</span>(updateVoltages) {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  ValidateElementsVoltages();</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">if</span>(m_continuousCalc && m_disconnectedElement) {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  m_disconnectedElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  RunStaticStudies();</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  }</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  m_selectionRect = wxRect2DDouble(0, 0, 0, 0);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  Redraw();</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  UpdateStatusBar();</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> </div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="keywordtype">void</span> Workspace::OnMouseMotion(wxMouseEvent& event)</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">case</span> MODE_INSERT: {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <a class="code" href="class_element.html">Element</a>* newElement = *(m_elementList.end() - 1); <span class="comment">// Get the last element in the list.</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  newElement-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">case</span> MODE_INSERT_TEXT: {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <a class="code" href="class_text.html">Text</a>* newText = *(m_textList.end() - 1);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  newText-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">case</span> MODE_DRAG:</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT:</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT_TEXT:</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  m_camera->SetTranslation(event.GetPosition());</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">case</span> MODE_EDIT: {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordtype">bool</span> foundPickbox = <span class="keyword">false</span>;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="comment">// Show element pickbox (when it has) if the mouse is over the selected object.</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>();</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="comment">// If the mouse is over a pickbox set correct mouse cursor.</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#af4815de7e7698ea116e8e2af51414050">PickboxContains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  foundPickbox = <span class="keyword">true</span>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  SetCursor(element-><a class="code" href="class_element.html#a245924c5be948397b101787dbea565ea">GetBestPickboxCursor</a>());</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!foundPickbox) {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  SetCursor(wxCURSOR_ARROW);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>();</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!foundPickbox) {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abd94ea2ca7984d9a32d3ffd23837a323">IsPickboxShown</a>()) redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>();</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  SetCursor(wxCURSOR_ARROW);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">case</span> MODE_MOVE_NODE: {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  element-><a class="code" href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd">MoveNode</a>(NULL, m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">case</span> MODE_MOVE_PICKBOX: {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  element-><a class="code" href="class_element.html#a6f071b6dfd64721ca673bfbe1ca2d525">MovePickbox</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  }</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  }</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">case</span> MODE_MOVE_ELEMENT:</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  element-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">// Move child nodes</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  std::vector<Element*> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = childList.begin(), itEnd = childList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  (*it)->MoveNode(element, m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  }</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="comment">// Text element motion</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; it++) {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  text-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  }</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">case</span> MODE_SELECTION_RECT: {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  wxPoint2DDouble currentPos = m_camera->ScreenToWorld(event.GetPosition());</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordtype">double</span> x, y, w, h;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">if</span>(currentPos.m_x < m_startSelRect.m_x) {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  x = currentPos.m_x;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  w = m_startSelRect.m_x - currentPos.m_x;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  x = m_startSelRect.m_x;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  w = currentPos.m_x - m_startSelRect.m_x;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">if</span>(currentPos.m_y < m_startSelRect.m_y) {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  y = currentPos.m_y;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  h = m_startSelRect.m_y - currentPos.m_y;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  y = m_startSelRect.m_y;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  h = currentPos.m_y - m_startSelRect.m_y;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  m_selectionRect = wxRect2DDouble(x, y, w, h);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span> </div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">if</span>(redraw) Redraw();</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  m_camera->UpdateMousePosition(event.GetPosition());</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  UpdateStatusBar();</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  m_timer->Start(); <span class="comment">// Restart the timer.</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> }</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> </div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="keywordtype">void</span> Workspace::OnMiddleDown(wxMouseEvent& event)</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">// Set to drag mode.</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">case</span> MODE_INSERT: {</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  m_mode = MODE_DRAG_INSERT;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">case</span> MODE_INSERT_TEXT: {</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  m_mode = MODE_DRAG_INSERT_TEXT;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  m_mode = MODE_DRAG_PASTE;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  m_mode = MODE_DRAG;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  }</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  m_camera->StartTranslation(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  UpdateStatusBar();</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> }</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> </div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="keywordtype">void</span> Workspace::OnMiddleUp(wxMouseEvent& event)</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> {</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT: {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT_TEXT: {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  m_mode = MODE_INSERT_TEXT;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  m_mode = MODE_PASTE;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">case</span> MODE_INSERT:</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">case</span> MODE_INSERT_TEXT:</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="comment">// Does nothing.</span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  }</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  UpdateStatusBar();</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> </div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="keywordtype">void</span> Workspace::OnScroll(wxMouseEvent& event)</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> {</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">if</span>(event.GetWheelRotation() > 0)</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  m_camera->SetScale(event.GetPosition(), +0.05);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  m_camera->SetScale(event.GetPosition(), -0.05);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> </div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  UpdateStatusBar();</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  Redraw();</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> }</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span> </div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="keywordtype">void</span> Workspace::OnKeyDown(wxKeyEvent& event)</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> {</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordtype">bool</span> insertingElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT || m_mode == MODE_INSERT_TEXT) insertingElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordtype">char</span> key = <span class="keyword">event</span>.GetUnicodeKey();</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordflow">if</span>(key != WXK_NONE) {</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">switch</span>(key) {</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keywordflow">case</span> WXK_ESCAPE: <span class="comment">// Cancel operations.</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT) {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  m_elementList.pop_back(); <span class="comment">// Removes the last element being inserted.</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  Redraw();</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode == MODE_INSERT_TEXT) {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  m_textList.pop_back();</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  Redraw();</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">case</span> WXK_DELETE: <span class="comment">// Delete selected elements</span></div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  DeleteSelectedElements();</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">case</span> <span class="charliteral">'A'</span>: {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <a class="code" href="class_text.html">Text</a>* newBus = <span class="keyword">new</span> <a class="code" href="class_text.html">Text</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  m_textList.push_back(newBus);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  m_mode = MODE_INSERT_TEXT;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Text: Click to insert, ESC to cancel."</span>));</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  Redraw();</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">case</span> <span class="charliteral">'F'</span>: {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_SHIFT) {</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  Fit();</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">case</span> <span class="charliteral">'R'</span>: <span class="comment">// Rotate the selected elements.</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  RotateSelectedElements(event.GetModifiers() != wxMOD_SHIFT);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordflow">case</span> <span class="charliteral">'B'</span>: <span class="comment">// Insert a bus.</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <a class="code" href="class_bus.html">Bus</a>* newBus = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(m_camera->ScreenToWorld(event.GetPosition()),</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  wxString::Format(_(<span class="stringliteral">"Bus %d"</span>), GetElementNumber(ID_BUS)));</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  IncrementElementNumber(ID_BUS);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  m_elementList.push_back(newBus);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Bus: Click to insert, ESC to cancel."</span>));</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  Redraw();</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  }</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">case</span> <span class="charliteral">'L'</span>: {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">if</span>(!event.ControlDown() && <span class="keyword">event</span>.ShiftDown()) { <span class="comment">// Insert a load.</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <a class="code" href="class_load.html">Load</a>* newLoad = <span class="keyword">new</span> <a class="code" href="class_load.html">Load</a>(wxString::Format(_(<span class="stringliteral">"Load %d"</span>), GetElementNumber(ID_LOAD)));</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  IncrementElementNumber(ID_LOAD);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  m_elementList.push_back(newLoad);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Load: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown() && !<span class="keyword">event</span>.ShiftDown()) { <span class="comment">// Insert a power line.</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <a class="code" href="class_line.html">Line</a>* newLine = <span class="keyword">new</span> <a class="code" href="class_line.html">Line</a>(wxString::Format(_(<span class="stringliteral">"Line %d"</span>), GetElementNumber(ID_LINE)));</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  IncrementElementNumber(ID_LINE);</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  m_elementList.push_back(newLine);</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Line: Click on two buses, ESC to cancel."</span>));</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  }</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  Redraw();</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  }</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="comment">// Tests - Ctrl + Shift + L</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">if</span>(event.ControlDown() && <span class="keyword">event</span>.ShiftDown()) {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="comment">// Nothing...</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  }</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordflow">case</span> <span class="charliteral">'T'</span>: <span class="comment">// Insert a transformer.</span></div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <a class="code" href="class_transformer.html">Transformer</a>* newTransformer =</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="keyword">new</span> <a class="code" href="class_transformer.html">Transformer</a>(wxString::Format(_(<span class="stringliteral">"Transformer %d"</span>), GetElementNumber(ID_TRANSFORMER)));</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  IncrementElementNumber(ID_TRANSFORMER);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  m_elementList.push_back(newTransformer);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Transformer: Click on two buses, ESC to cancel."</span>));</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  Redraw();</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  }</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">case</span> <span class="charliteral">'G'</span>: <span class="comment">// Insert a generator.</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  {</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* newGenerator =</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keyword">new</span> <a class="code" href="class_sync_generator.html">SyncGenerator</a>(wxString::Format(_(<span class="stringliteral">"Generator %d"</span>), GetElementNumber(ID_SYNCGENERATOR)));</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  IncrementElementNumber(ID_SYNCGENERATOR);</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  m_elementList.push_back(newGenerator);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Generator: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  Redraw();</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="keywordflow">case</span> <span class="charliteral">'I'</span>: {</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_SHIFT) { <span class="comment">// Insert an inductor.</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <a class="code" href="class_inductor.html">Inductor</a>* newInductor =</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keyword">new</span> <a class="code" href="class_inductor.html">Inductor</a>(wxString::Format(_(<span class="stringliteral">"Inductor %d"</span>), GetElementNumber(ID_INDUCTOR)));</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  IncrementElementNumber(ID_INDUCTOR);</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  m_elementList.push_back(newInductor);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Inductor: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  } <span class="keywordflow">else</span> <span class="comment">// Insert an induction motor.</span></div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  {</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* newIndMotor =</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keyword">new</span> <a class="code" href="class_ind_motor.html">IndMotor</a>(wxString::Format(_(<span class="stringliteral">"Induction motor %d"</span>), GetElementNumber(ID_INDMOTOR)));</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  IncrementElementNumber(ID_INDMOTOR);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  m_elementList.push_back(newIndMotor);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Induction Motor: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  Redraw();</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">case</span> <span class="charliteral">'K'</span>: <span class="comment">// Insert a synchronous condenser.</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  {</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* newSyncCondenser =</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keyword">new</span> <a class="code" href="class_sync_motor.html">SyncMotor</a>(wxString::Format(_(<span class="stringliteral">"Synchronous condenser %d"</span>), GetElementNumber(ID_SYNCMOTOR)));</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  IncrementElementNumber(ID_SYNCMOTOR);</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  m_elementList.push_back(newSyncCondenser);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Synchronous Condenser: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  Redraw();</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">case</span> <span class="charliteral">'C'</span>: {</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_SHIFT) { <span class="comment">// Insert a capacitor.</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* newCapacitor =</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keyword">new</span> <a class="code" href="class_capacitor.html">Capacitor</a>(wxString::Format(_(<span class="stringliteral">"Capacitor %d"</span>), GetElementNumber(ID_CAPACITOR)));</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  IncrementElementNumber(ID_CAPACITOR);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  m_elementList.push_back(newCapacitor);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Capacitor: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  Redraw();</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_CONTROL) { <span class="comment">// Copy.</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  CopySelection();</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  }</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">case</span> <span class="charliteral">'V'</span>: {</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_CONTROL) {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  Paste();</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  }</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  }</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  }</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  UpdateStatusBar();</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> }</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span> </div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> <span class="keywordtype">void</span> Workspace::UpdateStatusBar()</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span> {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">case</span> MODE_DRAG: {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"MODE: DRAG"</span>), 1);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">case</span> MODE_PASTE:</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"MODE: PASTE"</span>), 1);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  }</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> </div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keywordflow">case</span> MODE_INSERT:</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">case</span> MODE_INSERT_TEXT:</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT:</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT_TEXT: {</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"MODE: INSERT"</span>), 1);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> </div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="keywordflow">case</span> MODE_MOVE_ELEMENT:</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="keywordflow">case</span> MODE_MOVE_PICKBOX:</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">case</span> MODE_MOVE_NODE:</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">case</span> MODE_SELECTION_RECT:</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <span class="keywordflow">case</span> MODE_EDIT: {</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  m_statusBar->SetStatusText(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"MODE: EDIT"</span>), 1);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  }</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> </div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  m_statusBar->SetStatusText(wxString::Format(_(<span class="stringliteral">"ZOOM: %d%%"</span>), (<span class="keywordtype">int</span>)(m_camera->GetScale() * 100.0)), 2);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  m_statusBar->SetStatusText(</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  wxString::Format(wxT(<span class="stringliteral">"X: %.1f Y: %.1f"</span>), m_camera->GetMousePosition().m_x, m_camera->GetMousePosition().m_y),</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  3);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> }</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> <span class="keywordtype">void</span> Workspace::OnPopupClick(wxCommandEvent& event)</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> {</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  wxMenu* menu = <span class="keyword">static_cast<</span>wxMenu*<span class="keyword">></span>(<span class="keyword">event</span>.GetEventObject());</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <a class="code" href="class_element.html">Element</a>* element = <span class="keyword">static_cast<</span><a class="code" href="class_element.html">Element</a>*<span class="keyword">></span>(menu->GetClientData());</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <span class="keywordflow">switch</span>(event.GetId()) {</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>: {</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ae1652eded3ccbd241a783691117418b2">ShowForm</a>(<span class="keyword">this</span>, element)) UpdateTextElements();</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049af05f38a3b3fea5d6da036dce48e9d960">ID_LINE_ADD_NODE</a>: {</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <a class="code" href="class_line.html">Line</a>* line = <span class="keyword">static_cast<</span><a class="code" href="class_line.html">Line</a>*<span class="keyword">></span>(element);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  line->AddNode(m_camera->GetMousePosition());</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  Redraw();</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a1a8f8c62fc201993f6a605ff06314803">ID_LINE_REMOVE_NODE</a>: {</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <a class="code" href="class_line.html">Line</a>* line = <span class="keyword">static_cast<</span><a class="code" href="class_line.html">Line</a>*<span class="keyword">></span>(element);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  line->RemoveNode(m_camera->GetMousePosition());</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  Redraw();</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a9d58b2fe374676b88029d401da0d77a8">ID_ROTATE_CLOCK</a>: {</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  element-><a class="code" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Rotate</a>();</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <a class="code" href="class_element.html">Element</a>* iElement = *it;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="comment">// Parent's element rotating...</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)iElement-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); i++) {</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <a class="code" href="class_element.html">Element</a>* parent = iElement-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[i];</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <span class="keywordflow">if</span>(parent == element) {</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  iElement-><a class="code" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">RotateNode</a>(parent);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  }</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  }</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  Redraw();</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049adeee9ba1a6f37ff0622ca94a52e40551">ID_ROTATE_COUNTERCLOCK</a>: {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  element-><a class="code" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Rotate</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <a class="code" href="class_element.html">Element</a>* iElement = *it;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="comment">// Parent's element rotating...</span></div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)iElement-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); i++) {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <a class="code" href="class_element.html">Element</a>* parent = iElement-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[i];</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keywordflow">if</span>(parent == element) {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  iElement-><a class="code" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">RotateNode</a>(parent, <span class="keyword">false</span>);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  }</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  }</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  }</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  Redraw();</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a80c989d88bc686137e96564dfad6166a">ID_DELETE</a>: {</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <a class="code" href="class_element.html">Element</a>* iElement = *it;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> </div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keywordflow">if</span>(element == iElement) {</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="comment">// Remove child/parent.</span></div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  std::vector<Element*> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itc = childList.begin(), itEnd = childList.end(); itc != itEnd; ++itc) {</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <a class="code" href="class_element.html">Element</a>* child = *itc;</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keywordflow">if</span>(child) {</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  child-><a class="code" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">RemoveParent</a>(element);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  element-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(child);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  }</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  }</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  std::vector<Element*> parentList = element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itp = parentList.begin(), itEnd = parentList.end(); itp != itEnd; ++itp) {</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <a class="code" href="class_element.html">Element</a>* parent = *itp;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  parent-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(element);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  }</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  }</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> </div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itt = m_textList.begin(); itt != m_textList.end(); ++itt) {</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <a class="code" href="class_text.html">Text</a>* text = *itt;</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keywordflow">if</span>(text->GetElement() == element) {</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  m_textList.erase(itt--);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keywordflow">if</span>(text) <span class="keyword">delete</span> text;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  }</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  }</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> </div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  m_elementList.erase(it);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">if</span>(element) <span class="keyword">delete</span> element;</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  menu->SetClientData(NULL);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  }</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  }</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  }</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span> }</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> </div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> <span class="keywordtype">void</span> Workspace::RotateSelectedElements(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span> {</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="comment">// Parent's element rotating...</span></div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); i++) {</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <a class="code" href="class_element.html">Element</a>* parent = element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[i];</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">if</span>(parent) { <span class="comment">// Check if parent is not null</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  element-><a class="code" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">RotateNode</a>(parent, clockwise);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="comment">// Update the positions used on motion action, the element will not be necessarily</span></div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="comment">// moved.</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->GetMousePosition());</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  }</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  }</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  }</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  element-><a class="code" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Rotate</a>(clockwise);</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->GetMousePosition());</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  }</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  }</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> </div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="comment">// Rotate text element</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(); it != m_textList.end(); it++) {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  text-><a class="code" href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Rotate</a>(clockwise);</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  text-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->GetMousePosition());</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  }</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  }</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  Redraw();</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span> }</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> </div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> <span class="keywordtype">void</span> Workspace::DeleteSelectedElements()</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> {</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="comment">// Don't set the end of the list at the loop's begin.</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> </div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <span class="comment">// Remove child/parent.</span></div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  std::vector<Element*> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itc = childList.begin(), itEnd = childList.end(); itc != itEnd; ++itc) {</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  <a class="code" href="class_element.html">Element</a>* child = *itc;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keywordflow">if</span>(child) {</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  child-><a class="code" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">RemoveParent</a>(element);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  element-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(child);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  }</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  }</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  std::vector<Element*> parentList = element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itp = parentList.begin(), itEnd = parentList.end(); itp != itEnd; ++itp) {</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  <a class="code" href="class_element.html">Element</a>* parent = *itp;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  parent-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(element);</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  }</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  }</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> </div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itt = m_textList.begin(); itt != m_textList.end(); ++itt) {</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <a class="code" href="class_text.html">Text</a>* text = *itt;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <span class="keywordflow">if</span>(text->GetElement() == element) {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  m_textList.erase(itt--);</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="keywordflow">if</span>(text) <span class="keyword">delete</span> text;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  }</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  }</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> </div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  m_elementList.erase(it--);</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="keywordflow">if</span>(element) <span class="keyword">delete</span> element;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  }</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  }</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> </div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(); it != m_textList.end(); ++it) {</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  m_textList.erase(it--);</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordflow">if</span>(text) <span class="keyword">delete</span> text;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  }</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  }</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  Redraw();</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> }</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> </div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> <span class="keywordtype">bool</span> Workspace::GetElementsCorners(wxPoint2DDouble& leftUpCorner,</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  wxPoint2DDouble& rightDownCorner,</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  std::vector<Element*> elementList)</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> {</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <span class="keywordflow">if</span>(elementList.size() == 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> </div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  elementList[0]->CalculateBoundaries(leftUpCorner, rightDownCorner);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin() + 1, itEnd = elementList.end(); it != itEnd; it++) {</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  wxPoint2DDouble leftUp;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  wxPoint2DDouble rightDown;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  element-><a class="code" href="class_element.html#a57f5771fd003020fef3866a1d1dc7487">CalculateBoundaries</a>(leftUp, rightDown);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keywordflow">if</span>(leftUp.m_x < leftUpCorner.m_x) leftUpCorner.m_x = leftUp.m_x;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <span class="keywordflow">if</span>(leftUp.m_y < leftUpCorner.m_y) leftUpCorner.m_y = leftUp.m_y;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <span class="keywordflow">if</span>(rightDown.m_x > rightDownCorner.m_x) rightDownCorner.m_x = rightDown.m_x;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <span class="keywordflow">if</span>(rightDown.m_y > rightDownCorner.m_y) rightDownCorner.m_y = rightDown.m_y;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  }</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> }</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> </div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> <span class="keywordtype">void</span> Workspace::Fit()</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> {</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  wxPoint2DDouble leftUpCorner(0, 0);</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  wxPoint2DDouble rightDownCorner(0, 0);</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  std::vector<Element*> elementList = GetElementList();</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  elementList.push_back(*it);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  }</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> </div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <span class="keywordflow">if</span>(!GetElementsCorners(leftUpCorner, rightDownCorner, elementList)) <span class="keywordflow">return</span>;</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  wxPoint2DDouble middleCoords = (leftUpCorner + rightDownCorner) / 2.0;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> </div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordtype">int</span> width = 0.0;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <span class="keywordtype">int</span> height = 0.0;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  GetSize(&width, &height);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> </div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="keywordtype">double</span> scaleX = double(width) / (rightDownCorner.m_x - leftUpCorner.m_x);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordtype">double</span> scaleY = double(height) / (rightDownCorner.m_y - leftUpCorner.m_y);</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> </div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <span class="keywordtype">double</span> scale = scaleX < scaleY ? scaleX : scaleY;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <span class="keywordflow">if</span>(scale > m_camera->GetZoomMax()) scale = m_camera->GetZoomMax();</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  <span class="keywordflow">if</span>(scale < m_camera->GetZoomMin()) scale = m_camera->GetZoomMin();</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> </div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  m_camera->SetScale(scale);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  m_camera->StartTranslation(middleCoords);</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  m_camera->SetTranslation(wxPoint2DDouble(width / 2, height / 2));</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  Redraw();</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> }</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> </div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> <span class="keywordtype">void</span> Workspace::ValidateBusesVoltages(<a class="code" href="class_element.html">Element</a>* initialBus)</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> {</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="keywordtype">double</span> nominalVoltage = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(initialBus)->GetElectricalData().nominalVoltage;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalVoltageUnit = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(initialBus)->GetElectricalData().nominalVoltageUnit;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> </div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); it++) {</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  <a class="code" href="class_element.html">Element</a>* child = *it;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> </div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*child) == <span class="keyword">typeid</span>(<a class="code" href="class_line.html">Line</a>)) {</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <span class="keywordflow">if</span>(child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0] && child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1]) {</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData();</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData();</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> </div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordflow">if</span>(data1.nominalVoltage != data2.nominalVoltage ||</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  data1.nominalVoltageUnit != data2.nominalVoltageUnit) {</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  data1.nominalVoltage = nominalVoltage;</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  data2.nominalVoltage = nominalVoltage;</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  data1.nominalVoltageUnit = nominalVoltageUnit;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  data2.nominalVoltageUnit = nominalVoltageUnit;</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->SetElectricalData(data1);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->SetElectricalData(data2);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> </div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  it = m_elementList.begin(); <span class="comment">// Restart search.</span></div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  }</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  }</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  }</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  }</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> </div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="comment">// ValidateElementsVoltages();</span></div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> </div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> <span class="keywordtype">void</span> Workspace::ValidateElementsVoltages()</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> {</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); it++) {</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  <a class="code" href="class_power_element.html">PowerElement</a>* child = *it;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span> </div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  std::vector<double> nominalVoltage;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  std::vector<ElectricalUnit> nominalVoltageUnit;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); i++) {</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[i]);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  nominalVoltage.push_back(parent->GetElectricalData().nominalVoltage);</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  nominalVoltageUnit.push_back(parent->GetElectricalData().nominalVoltageUnit);</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  }</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  }</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  child-><a class="code" href="class_power_element.html#a0730506d0417089d69f7ce64b05daed4">SetNominalVoltage</a>(nominalVoltage, nominalVoltageUnit);</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  }</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span> }</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span> </div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> <span class="keywordtype">bool</span> Workspace::RunPowerFlow()</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> {</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <a class="code" href="class_power_flow.html">PowerFlow</a> pf(GetElementList());</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <span class="keywordtype">bool</span> result = pf.RunGaussSeidel();</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <span class="keywordflow">if</span>(!result) {</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, pf.GetErrorMessage(), _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  msgDialog.ShowModal();</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  }</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> </div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  UpdateTextElements();</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  Redraw();</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> </div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> }</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> </div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> <span class="keywordtype">void</span> Workspace::UpdateTextElements()</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> {</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  text->UpdateText(m_properties->GetSimulationPropertiesData().basePower);</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  }</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> }</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> </div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> <span class="keywordtype">void</span> Workspace::CopySelection()</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> {</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  UpdateElementsID();</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  std::vector<Element*> selectedElements;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  <span class="comment">// The buses need to be numerated to associate the child's parents to the copies.</span></div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="keywordtype">int</span> busNumber = 0;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*element) == <span class="keyword">typeid</span>(<a class="code" href="class_bus.html">Bus</a>)) {</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  <a class="code" href="class_bus.html">Bus</a>* bus = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(element);</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  data.number = busNumber;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  busNumber++;</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  }</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  selectedElements.push_back(element);</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  }</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  }</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  selectedElements.push_back(text);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  }</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  }</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <a class="code" href="class_element_data_object.html">ElementDataObject</a>* dataObject = <span class="keyword">new</span> <a class="code" href="class_element_data_object.html">ElementDataObject</a>(selectedElements);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  wxTheClipboard->SetData(dataObject);</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  wxTheClipboard->Close();</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> }</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> </div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> <span class="keywordtype">bool</span> Workspace::Paste()</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> {</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <span class="keywordflow">if</span>(wxTheClipboard->Open()) {</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <a class="code" href="class_element_data_object.html">ElementDataObject</a> dataObject;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> </div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <span class="keywordflow">if</span>(wxTheClipboard->IsSupported(wxDataFormat(<span class="stringliteral">"PSPCopy"</span>))) {</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  <span class="keywordflow">if</span>(!wxTheClipboard->GetData(dataObject)) {</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  wxMessageDialog dialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to paste from clipboard."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  wxOK | wxCENTER | wxICON_ERROR, wxDefaultPosition);</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  dialog.ShowModal();</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  wxTheClipboard->Close();</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  }</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  wxTheClipboard->Close();</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  }</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  wxTheClipboard->Close();</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> </div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  UnselectAll();</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> </div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  std::vector<Element*> pastedElements;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  <a class="code" href="struct_elements_lists.html">ElementsLists</a>* elementsLists = dataObject.GetElementsLists();</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> </div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <span class="comment">// Paste buses (parents).</span></div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  <span class="keyword">auto</span> parentList = elementsLists->parentList;</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  std::vector<Bus*> pastedBusList; <span class="comment">// To set new parents;</span></div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = parentList.begin(), itEnd = parentList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  <a class="code" href="class_element.html">Element</a>* copy = (*it)-><a class="code" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">GetCopy</a>();</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keywordflow">if</span>(copy) {</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  pastedElements.push_back(copy);</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  pastedBusList.push_back(static_cast<Bus*>(copy));</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  m_elementList.push_back(static_cast<PowerElement*>(copy));</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  }</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  }</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span> </div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  <span class="comment">// Paste other elements.</span></div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  <span class="keyword">auto</span> elementLists = elementsLists->elementList;</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementLists.begin(), itEnd = elementLists.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  <a class="code" href="class_element.html">Element</a>* copy = (*it)-><a class="code" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">GetCopy</a>();</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <span class="keywordflow">if</span>(copy) {</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  <span class="comment">// Check if is text element</span></div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  <span class="keywordflow">if</span>(<a class="code" href="class_text.html">Text</a>* text = dynamic_cast<Text*>(copy)) {</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="comment">// Check if element associated with the text exists.</span></div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="keywordtype">bool</span> elementExist = <span class="keyword">false</span>;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_elementList.size(); i++) {</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <span class="keywordflow">if</span>(text->GetElement() == m_elementList[i]) {</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  elementExist = <span class="keyword">true</span>;</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  }</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  }</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <span class="keywordflow">if</span>(elementExist) {</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  pastedElements.push_back(copy);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  m_textList.push_back(text);</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  }</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  <span class="comment">// Change the parent if copied, otherwise remove it.</span></div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)copy-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); j++) {</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <a class="code" href="class_bus.html">Bus</a>* currentParent = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(copy-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[j]);</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  <span class="keywordflow">if</span>(currentParent) {</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <span class="keywordtype">int</span> parentID = currentParent-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>();</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  <span class="keywordtype">bool</span> parentCopied = <span class="keyword">false</span>;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < (int)pastedBusList.size(); k++) {</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <a class="code" href="class_bus.html">Bus</a>* newParent = pastedBusList[k];</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <span class="keywordflow">if</span>(parentID == newParent-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>()) {</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  parentCopied = <span class="keyword">true</span>;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  copy-><a class="code" href="class_element.html#a74ec9a279ac0127550e00941206dddb1">ReplaceParent</a>(currentParent, newParent);</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  }</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  }</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="keywordflow">if</span>(!parentCopied) copy-><a class="code" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">RemoveParent</a>(currentParent);</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  }</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  }</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> </div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  pastedElements.push_back(copy);</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  m_elementList.push_back(static_cast<PowerElement*>(copy));</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  }</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  }</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  }</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> </div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  <span class="comment">// Update buses childs</span></div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = pastedBusList.begin(), itEnd = pastedBusList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  std::vector<Element*> childList = bus-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = childList.begin(), itEnd = childList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  <a class="code" href="class_element.html">Element</a>* currentChild = *it;</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  <span class="keywordtype">int</span> childID = currentChild-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>();</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  <span class="keywordtype">bool</span> childCopied = <span class="keyword">false</span>;</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)pastedElements.size(); i++) {</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  <a class="code" href="class_element.html">Element</a>* newChild = pastedElements[i];</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <span class="keywordflow">if</span>(childID == newChild-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>()) {</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  childCopied = <span class="keyword">true</span>;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  bus-><a class="code" href="class_element.html#ad5f4bee2e241c430a643f46dadf3d3f5">ReplaceChild</a>(currentChild, newChild);</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  }</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  }</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  <span class="keywordflow">if</span>(!childCopied) bus-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(currentChild);</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  }</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  }</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span> </div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  <span class="comment">// Move elements (and nodes) to the mouse position.</span></div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  <span class="comment">// The start position it's the center of the pasted objects.</span></div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  wxPoint2DDouble leftUpCorner, rightDownCorner;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  GetElementsCorners(leftUpCorner, rightDownCorner, pastedElements);</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  wxPoint2DDouble startPosition = (leftUpCorner + rightDownCorner) / 2.0;</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = pastedElements.begin(), itEnd = pastedElements.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(startPosition);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  element-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->GetMousePosition());</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); i++) {</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  <a class="code" href="class_element.html">Element</a>* parent = element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[i];</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  element-><a class="code" href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd">MoveNode</a>(parent, m_camera->GetMousePosition());</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  }</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  }</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  wxMessageDialog dialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to paste from clipboard."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  wxOK | wxCENTER | wxICON_ERROR, wxDefaultPosition);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  dialog.ShowModal();</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  }</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> </div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  UpdateElementsID();</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  m_mode = MODE_PASTE;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Click to paste."</span>));</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  UpdateStatusBar();</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  Redraw();</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span> }</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> </div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> <span class="keywordtype">void</span> Workspace::UnselectAll()</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span> {</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; it++) {</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  }</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; it++) {</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  }</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span> }</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span> </div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span> <span class="keywordtype">void</span> Workspace::UpdateElementsID()</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span> {</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = 0;</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  element-><a class="code" href="class_element.html#a9aa2fec8b6c7bef4bf75b9f86fbb76f2">SetID</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  <span class="keywordtype">id</span>++;</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  }</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  text-><a class="code" href="class_element.html#a9aa2fec8b6c7bef4bf75b9f86fbb76f2">SetID</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  <span class="keywordtype">id</span>++;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  }</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> }</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span> <span class="keywordtype">void</span> Workspace::OnTimer(wxTimerEvent& event)</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span> {</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  <span class="keywordflow">if</span>(m_tipWindow) {</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  m_tipWindow->Close();</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  m_tipWindow = NULL;</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  }</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  <span class="keywordflow">if</span>(m_mode == MODE_EDIT) {</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->GetMousePosition())) {</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  wxString tipText = element-><a class="code" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">GetTipText</a>();</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  <span class="keywordflow">if</span>(!tipText.IsEmpty()) {</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  m_tipWindow = <span class="keyword">new</span> wxTipWindow(<span class="keyword">this</span>, tipText, 10000, &m_tipWindow);</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  <span class="comment">// Creates a very tiny bounding rect to remove the tip on any mouse movement.</span></div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  m_tipWindow->SetBoundingRect(wxRect(wxGetMousePosition(), wxSize(1, 1)));</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  }</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  }</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  }</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  }</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> </div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  m_timer->Stop();</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> }</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> </div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> <span class="keywordtype">void</span> Workspace::SetTextList(std::vector<Text*> textList)</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> {</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  m_textList.clear();</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = textList.begin(), itEnd = textList.end(); it != itEnd; ++it) m_textList.push_back(*it);</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span> </div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  UpdateTextElements();</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> }</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span> </div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span> <span class="keywordtype">void</span> Workspace::SetElementList(std::vector<Element*> elementList)</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> {</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  m_elementList.clear();</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it)</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  m_elementList.push_back(static_cast<PowerElement*>(*it));</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> }</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span> </div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span> <span class="keywordtype">void</span> Workspace::OnIdle(wxIdleEvent& event)</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> {</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  <span class="comment">// TODO: Find other solution to text displayed wrong on opened file.</span></div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>  <span class="keywordflow">if</span>(m_justOpened) {</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  m_justOpened = <span class="keyword">false</span>;</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  UpdateTextElements();</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  Redraw();</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  }</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> }</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> </div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span> std::vector<Element*> Workspace::GetAllElements()<span class="keyword"> const</span></div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span> <span class="keyword"></span>{</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>  std::vector<Element*> allElements;</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> </div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) allElements.push_back(*it);</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) allElements.push_back(*it);</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> </div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  <span class="keywordflow">return</span> allElements;</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> }</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> </div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> <span class="keywordtype">bool</span> Workspace::RunFault()</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> {</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  <a class="code" href="class_fault.html">Fault</a> fault(GetElementList());</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>  <span class="keywordtype">bool</span> result = fault.RunFaultCalculation(100e6);</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <span class="keywordflow">if</span>(!result) {</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, fault.GetErrorMessage(), _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  msgDialog.ShowModal();</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  }</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span> </div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>  UpdateTextElements();</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  Redraw();</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span> </div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span> }</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span> </div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span> std::vector<Element*> Workspace::GetElementList()<span class="keyword"> const</span></div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span> <span class="keyword"></span>{</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  std::vector<Element*> elementList;</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) elementList.push_back(*it);</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  <span class="keywordflow">return</span> elementList;</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span> }</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span> </div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span> <span class="keywordtype">bool</span> Workspace::RunSCPower()</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> {</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>  <a class="code" href="class_fault.html">Fault</a> fault(GetElementList());</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>  <span class="keywordtype">bool</span> result = fault.RunSCPowerCalcutation(100e6);</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>  <span class="keywordflow">if</span>(!result) {</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, fault.GetErrorMessage(), _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>  msgDialog.ShowModal();</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  }</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span> </div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>  UpdateTextElements();</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  Redraw();</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span> </div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span> }</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span> </div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span> <span class="keywordtype">bool</span> Workspace::RunStability()</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span> {</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>  <span class="comment">// Run power flow before stability.</span></div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  RunPowerFlow();</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span> </div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  <a class="code" href="class_electromechanical.html">Electromechanical</a> stability(<span class="keyword">this</span>, GetElementList(), m_properties->GetSimulationPropertiesData());</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  <span class="keywordtype">bool</span> result = stability.RunStabilityCalculation();</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  <span class="keywordflow">if</span>(!result) {</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, stability.GetErrorMessage(), _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>  msgDialog.ShowModal();</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>  }</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>  m_stabilityTimeVector.clear();</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>  m_stabilityTimeVector = stability.GetTimeVector();</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> </div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>  <span class="comment">// Run power flow after stability.</span></div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  RunPowerFlow();</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> </div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Do you wish to open the stability graphics?"</span>), _(<span class="stringliteral">"Question"</span>),</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  wxYES_NO | wxCENTRE | wxICON_QUESTION);</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>  <span class="keywordflow">if</span>(msgDialog.ShowModal() == wxID_YES) {</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>  std::vector<ElementPlotData> plotDataList;</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  <a class="code" href="class_power_element.html">PowerElement</a>* element = *it;</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a> plotData;</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_power_element.html#acadf6712b430f9fadfbd7015903eaeaf">GetPlotData</a>(plotData)) plotDataList.push_back(plotData);</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>  }</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a> tests(_(<span class="stringliteral">"Error"</span>), ElementPlotData::CT_TEST);</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>  tests.AddData(stability.m_wErrorVector, _(<span class="stringliteral">"Speed error"</span>));</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>  tests.AddData(stability.m_sdCVector, _(<span class="stringliteral">"Sd"</span>));</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>  tests.AddData(stability.m_sqCVector, _(<span class="stringliteral">"Sq"</span>));</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  tests.AddData(stability.m_numItVector, _(<span class="stringliteral">"Number iterations"</span>));</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  plotDataList.push_back(tests);</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> </div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  <a class="code" href="class_chart_view.html">ChartView</a>* cView = <span class="keyword">new</span> <a class="code" href="class_chart_view.html">ChartView</a>(<span class="keyword">this</span>, plotDataList, m_stabilityTimeVector);</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>  cView->Show();</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>  }</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> </div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> }</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> <span class="keywordtype">void</span> Workspace::OnMiddleDoubleClick(wxMouseEvent& event)</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span> {</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  Fit();</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> }</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> </div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span> <span class="keywordtype">bool</span> Workspace::RunStaticStudies()</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span> {</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>  <span class="keywordtype">bool</span> pfStatus, faultStatus, scStatus;</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>  pfStatus = faultStatus = scStatus = <span class="keyword">false</span>;</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> </div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>  pfStatus = RunPowerFlow();</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> </div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  <span class="keywordflow">if</span>(m_properties->GetSimulationPropertiesData().faultAfterPowerFlow) {</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>  <span class="keywordflow">if</span>(pfStatus) faultStatus = RunFault();</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>  faultStatus = <span class="keyword">true</span>;</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  }</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span> </div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>  <span class="keywordflow">if</span>(m_properties->GetSimulationPropertiesData().scPowerAfterPowerFlow) {</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  <span class="keywordflow">if</span>(pfStatus) scStatus = RunSCPower();</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>  scStatus = <span class="keyword">true</span>;</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>  }</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span> </div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  <span class="keywordflow">if</span>(pfStatus && faultStatus && scStatus) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span> </div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> }</div><div class="ttc" id="class_text_html_a51c55b9272f653cfc3cdafe665d5dde0"><div class="ttname"><a href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Text::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00047">Text.cpp:47</a></div></div> -<div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00065">Text.h:65</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="_workspace_8h.html">Workspace.h</a>"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="_camera_8h.html">Camera.h</a>"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "<a class="code" href="_element_8h.html">Element.h</a>"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//#include "Bus.h"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "<a class="code" href="_line_8h.html">Line.h</a>"</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="_transformer_8h.html">Transformer.h</a>"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="_sync_generator_8h.html">SyncGenerator.h</a>"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="_ind_motor_8h.html">IndMotor.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="_sync_motor_8h.html">SyncMotor.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="_load_8h.html">Load.h</a>"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include "<a class="code" href="_inductor_8h.html">Inductor.h</a>"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="_capacitor_8h.html">Capacitor.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="_element_data_object_8h.html">ElementDataObject.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="_text_8h.html">Text.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="_power_flow_8h.html">PowerFlow.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="_fault_8h.html">Fault.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="_electromechanical_8h.html">Electromechanical.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include "<a class="code" href="_element_plot_data_8h.html">ElementPlotData.h</a>"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include "<a class="code" href="_chart_view_8h.html">ChartView.h</a>"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include "<a class="code" href="_properties_data_8h.html">PropertiesData.h</a>"</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// Workspace</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> Workspace::Workspace() : <a class="code" href="class_workspace_base.html">WorkspaceBase</a>(NULL) {}</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> Workspace::Workspace(wxWindow* parent, wxString name, wxStatusBar* statusBar) : <a class="code" href="class_workspace_base.html">WorkspaceBase</a>(parent)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  m_timer->Start();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  m_name = name;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  m_statusBar = statusBar;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  m_glContext = <span class="keyword">new</span> wxGLContext(m_glCanvas);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  m_camera = <span class="keyword">new</span> <a class="code" href="class_camera.html">Camera</a>();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  m_selectionRect = wxRect2DDouble(0, 0, 0, 0);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < NUM_ELEMENTS; ++i) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  m_elementNumber[i] = 1;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> widths[4] = {-3, -1, 100, 100};</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  m_statusBar->SetStatusWidths(4, widths);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  m_properties = <span class="keyword">new</span> <a class="code" href="class_properties_data.html">PropertiesData</a>();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> Workspace::~Workspace()</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span>(*it) <span class="keyword">delete</span> *it;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">if</span>(*it) <span class="keyword">delete</span> *it;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">if</span>(m_camera) <span class="keyword">delete</span> m_camera;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">if</span>(m_glContext) <span class="keyword">delete</span> m_glContext;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span>(m_tipWindow) <span class="keyword">delete</span> m_tipWindow;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span>(m_properties) <span class="keyword">delete</span> m_properties;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="keywordtype">void</span> Workspace::OnPaint(wxPaintEvent& event)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  wxPaintDC dc(m_glCanvas);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  m_glContext->SetCurrent(*m_glCanvas);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  SetViewport();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Set GLCanvas scale and translation.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); <span class="comment">// Scale</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  glTranslated(m_camera->GetTranslation().m_x, m_camera->GetTranslation().m_y, 0.0); <span class="comment">// Translation</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment">// Draw</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Elements</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  element-><a class="code" href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Draw</a>(m_camera->GetTranslation(), m_camera->GetScale());</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// Texts</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(); it != m_textList.end(); ++it) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  text->Draw(m_camera->GetTranslation(), m_camera->GetScale());</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// Selection rectangle</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  glLineWidth(1.0);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  glColor4d(0.0, 0.5, 1.0, 1.0);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  glBegin(GL_LINE_LOOP);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  glEnd();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  glColor4d(0.0, 0.5, 1.0, 0.3);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  glBegin(GL_QUADS);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  glVertex2d(m_selectionRect.m_x, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y + m_selectionRect.m_height);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  glEnd();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  glFlush(); <span class="comment">// Sends all pending information directly to the GPU.</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  m_glCanvas->SwapBuffers();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="keywordtype">void</span> Workspace::SetViewport()</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  glClearColor(1.0, 1.0, 1.0, 1.0); <span class="comment">// White background.</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  glClear(GL_COLOR_BUFFER_BIT);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  glDisable(GL_DEPTH_TEST);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  glDisable(GL_TEXTURE_2D);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  glEnable(GL_COLOR_MATERIAL);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  glEnable(GL_BLEND);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  glEnable(GL_LINE_SMOOTH);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">double</span> width = m_glCanvas->GetSize().x - 1;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">double</span> height = m_glCanvas->GetSize().y - 1;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="comment">// Viewport fit the screen.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  glViewport(0, 0, width, height);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  glMatrixMode(GL_PROJECTION);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  glLoadIdentity();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  gluOrtho2D(0.0, width, height, 0.0);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  glMatrixMode(GL_MODELVIEW);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  glLoadIdentity();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="keywordtype">void</span> Workspace::OnLeftClickDown(wxMouseEvent& event)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  wxPoint clickPoint = <span class="keyword">event</span>.GetPosition();</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordtype">bool</span> foundElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="class_element.html">Element</a>* newElement = NULL;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordtype">bool</span> showNewElementForm = <span class="keyword">false</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordtype">bool</span> clickOnSwitch = <span class="keyword">false</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT_TEXT || m_mode == MODE_PASTE || m_mode == MODE_DRAG_PASTE) {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode == MODE_INSERT || m_mode == MODE_DRAG_INSERT || m_mode == MODE_DRAG_INSERT_TEXT) {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// Get the last element inserted on the list.</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  newElement = *(m_elementList.end() - 1);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="comment">// Clicked in any element.</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="comment">// Click at a bus.</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*element) == <span class="keyword">typeid</span>(<a class="code" href="class_bus.html">Bus</a>)) {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="comment">// Select the bus.</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  foundElement = <span class="keyword">true</span>; <span class="comment">// Element found.</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">// Add the new element's parent. If the element being inserted returns true, back to</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">// edit mode.</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span>(newElement-><a class="code" href="class_element.html#a569178e9138490a981511a644536c0f9">AddParent</a>(element, m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  ValidateElementsVoltages();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  m_timer->Stop();</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  showNewElementForm = <span class="keyword">true</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// The line element can have an indefined number of points.</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*newElement) == <span class="keyword">typeid</span>(<a class="code" href="class_line.html">Line</a>)) {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  newElement-><a class="code" href="class_element.html#aa40c60c03d6a76639d8c6f6bab86720e">AddPoint</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordtype">bool</span> clickPickbox = <span class="keyword">false</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <a class="code" href="class_power_element.html">PowerElement</a>* element = *it;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>(); <span class="comment">// Reset pickbox state.</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">// Set movement initial position (not necessarily will be moved).</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// Click in selected element node.</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#a95b4f7e9341883ec39d0201148afffb4">NodeContains</a>(m_camera->ScreenToWorld(clickPoint)) != 0 && element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  m_mode = MODE_MOVE_NODE;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  m_disconnectedElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// Click in an element.</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// Select and show pickbox.</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">// If pickbox contains the click, move the pickbox</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#af4815de7e7698ea116e8e2af51414050">PickboxContains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  m_mode = MODE_MOVE_PICKBOX;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  clickPickbox = <span class="keyword">true</span>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="comment">// If didn't found a pickbox, move the element</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span>(!clickPickbox) {</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  m_mode = MODE_MOVE_ELEMENT;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// Click in a switch.</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(element-><a class="code" href="class_power_element.html#a789105cc7c170330e7daf2a0453fde6d">SwitchesContains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  element-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(element-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>() ? false : <span class="keyword">true</span>);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  clickOnSwitch = <span class="keyword">true</span>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">// Text element</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  text-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->ScreenToWorld(clickPoint));</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Contains</a>(m_camera->ScreenToWorld(clickPoint))) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  m_mode = MODE_MOVE_ELEMENT;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  foundElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">if</span>(!foundElement) {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  m_mode = MODE_SELECTION_RECT;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  m_startSelRect = m_camera->ScreenToWorld(clickPoint);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  Redraw();</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  UpdateStatusBar();</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">if</span>(showNewElementForm) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span>(newElement) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  newElement-><a class="code" href="class_element.html#ae1652eded3ccbd241a783691117418b2">ShowForm</a>(<span class="keyword">this</span>, newElement);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">if</span>(m_continuousCalc) RunStaticStudies();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span>(clickOnSwitch && m_continuousCalc) RunStaticStudies();</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="keywordtype">void</span> Workspace::OnLeftDoubleClick(wxMouseEvent& event)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordtype">bool</span> elementEdited = <span class="keyword">false</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordtype">bool</span> clickOnSwitch = <span class="keyword">false</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <a class="code" href="class_power_element.html">PowerElement</a>* element = *it;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// Click in an element.</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordtype">bool</span> elementIsBus = <span class="keyword">false</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="class_bus.html">Bus</a> oldBus;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <a class="code" href="class_bus.html">Bus</a>* currentBus = NULL;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span>((currentBus = dynamic_cast<Bus*>(element))) {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  elementIsBus = <span class="keyword">true</span>;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  oldBus = *currentBus;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  m_timer->Stop();</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  element-><a class="code" href="class_element.html#ae1652eded3ccbd241a783691117418b2">ShowForm</a>(<span class="keyword">this</span>, element);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  elementEdited = <span class="keyword">true</span>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="comment">// If the edited element is a bus and was changed the rated voltage, this voltage must be</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// propagated through the lines</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">if</span>(elementIsBus) {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// The voltage was changed</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">if</span>(oldBus.GetElectricalData().nominalVoltage != currentBus->GetElectricalData().nominalVoltage ||</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  oldBus.GetElectricalData().nominalVoltageUnit !=</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  currentBus->GetElectricalData().nominalVoltageUnit) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="comment">// Check if the bus has line as child.</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  std::vector<Element*> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itc = childList.begin(), itcEnd = childList.end(); itc != itcEnd; ++itc) {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <a class="code" href="class_element.html">Element</a>* child = *itc;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*child) == <span class="keyword">typeid</span>(<a class="code" href="class_line.html">Line</a>)) {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Do you want to change the rated voltage of the path?"</span>),</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  _(<span class="stringliteral">"Warning"</span>), wxYES_NO | wxCENTRE | wxICON_WARNING);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordflow">if</span>(msgDialog.ShowModal() == wxID_YES)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  ValidateBusesVoltages(element);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keyword">auto</span> data = currentBus->GetElectricalData();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  data.nominalVoltage = oldBus.GetElectricalData().nominalVoltage;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  data.nominalVoltageUnit = oldBus.GetElectricalData().nominalVoltageUnit;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  currentBus->SetElectricalData(data);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  ValidateElementsVoltages();</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="comment">// Click in a switch.</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(element-><a class="code" href="class_power_element.html#a789105cc7c170330e7daf2a0453fde6d">SwitchesContains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  element-><a class="code" href="class_element.html#aeb786f831736af82b74c1393ee4cd2bb">SetOnline</a>(element-><a class="code" href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">IsOnline</a>() ? false : <span class="keyword">true</span>);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  clickOnSwitch = <span class="keyword">true</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="comment">// Text element</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(); it != m_textList.end(); ++it) {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  text->ShowForm(<span class="keyword">this</span>, GetElementList());</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  }</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keywordflow">if</span>(elementEdited) {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  UpdateTextElements();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">if</span>(m_continuousCalc) RunStaticStudies();</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="keywordflow">if</span>(clickOnSwitch && m_continuousCalc) RunStaticStudies();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">if</span>(redraw) Redraw();</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  m_timer->Start();</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span> </div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="keywordtype">void</span> Workspace::OnRightClickDown(wxMouseEvent& event)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span>(m_mode == MODE_EDIT) {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="comment">// Show context menu.</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  wxMenu menu;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#a2a436b0497017a1c3d03dba5e59f037e">GetContextMenu</a>(menu)) {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  m_timer->Stop();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  menu.SetClientData(element);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  menu.Bind(wxEVT_COMMAND_MENU_SELECTED, &Workspace::OnPopupClick, <span class="keyword">this</span>);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  PopupMenu(&menu);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">if</span>(!menu.GetClientData()) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  }</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <span class="keywordflow">if</span>(redraw) Redraw();</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  m_timer->Start();</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="keywordtype">void</span> Workspace::OnLeftClickUp(wxMouseEvent& event)</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> {</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="comment">// This event (under certain conditions) deselects the elements and back to edit mode or select the elements using</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="comment">// the selection rectangle.</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordtype">bool</span> foundPickbox = <span class="keyword">false</span>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordtype">bool</span> findNewParent = <span class="keyword">false</span>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordtype">bool</span> updateVoltages = <span class="keyword">false</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keyword">auto</span> itnp = m_elementList.begin();</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="comment">// The user was moving a pickbox.</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span>(m_mode == MODE_MOVE_PICKBOX) {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="comment">// Catch only the element that have the pickbox shown.</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abd94ea2ca7984d9a32d3ffd23837a323">IsPickboxShown</a>()) {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="comment">// If the element is a bus, check if a node is outside.</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*element) == <span class="keyword">typeid</span>(<a class="code" href="class_bus.html">Bus</a>)) {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="comment">// Get all the bus children.</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_elementList.size(); i++) {</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="class_element.html">Element</a>* child = m_elementList[i];</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); j++) {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <a class="code" href="class_element.html">Element</a>* parent = child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[j];</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="comment">// The child have a parent that is the element.</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="keywordflow">if</span>(parent == element) {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  child-><a class="code" href="class_element.html#a499c3b52be27d2bf436a13b6f5353b9c">UpdateNodes</a>();</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  m_disconnectedElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  }</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  }</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">if</span>(m_mode == MODE_SELECTION_RECT) {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Intersects</a>(m_selectionRect)) {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode == MODE_MOVE_NODE) {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_elementList.size(); i++) {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <a class="code" href="class_element.html">Element</a>* parent = m_elementList[i];</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*parent) == <span class="keyword">typeid</span>(<a class="code" href="class_bus.html">Bus</a>)) {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac7490a91f3edfff08584567cc84d86b5">SetNodeParent</a>(parent)) {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  parent-><a class="code" href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">AddChild</a>(element);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  findNewParent = <span class="keyword">true</span>;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  itnp = it;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  element-><a class="code" href="class_element.html#a8c16c17a6f22ffcdeb80ffa0ed27a72a">ResetNodes</a>();</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="comment">// element->ResetNodes();</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">// Deselect</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">if</span>(!element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#af4815de7e7698ea116e8e2af51414050">PickboxContains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  foundPickbox = <span class="keyword">true</span>;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>();</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">// Text element</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(); it != m_textList.end(); it++) {</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="keywordflow">if</span>(m_mode == MODE_SELECTION_RECT) {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_text.html#a9923c820cd77b411257ba48beceafeaa">Intersects</a>(m_selectionRect)) {</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>();</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown()) {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">if</span>(!text-><a class="code" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  }</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span> </div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">if</span>(findNewParent) {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  std::rotate(itnp, itnp + 1, m_elementList.end());</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  updateVoltages = <span class="keyword">true</span>;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">if</span>(!foundPickbox) {</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  SetCursor(wxCURSOR_ARROW);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="keywordflow">if</span>(m_mode != MODE_INSERT) {</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">if</span>(updateVoltages) {</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  ValidateElementsVoltages();</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span> </div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="keywordflow">if</span>(m_continuousCalc && m_disconnectedElement) {</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  m_disconnectedElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  RunStaticStudies();</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  }</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  m_selectionRect = wxRect2DDouble(0, 0, 0, 0);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  Redraw();</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  UpdateStatusBar();</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> }</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span> </div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="keywordtype">void</span> Workspace::OnMouseMotion(wxMouseEvent& event)</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span> {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordtype">bool</span> redraw = <span class="keyword">false</span>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">case</span> MODE_INSERT: {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <a class="code" href="class_element.html">Element</a>* newElement = *(m_elementList.end() - 1); <span class="comment">// Get the last element in the list.</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  newElement-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span> </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">case</span> MODE_INSERT_TEXT: {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <a class="code" href="class_text.html">Text</a>* newText = *(m_textList.end() - 1);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  newText-><a class="code" href="class_element.html#a920fe7ba1563615857618f01e64b3284">SetPosition</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span> </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">case</span> MODE_DRAG:</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT:</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT_TEXT:</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  m_camera->SetTranslation(event.GetPosition());</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span> </div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">case</span> MODE_EDIT: {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordtype">bool</span> foundPickbox = <span class="keyword">false</span>;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="comment">// Show element pickbox (when it has) if the mouse is over the selected object.</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>();</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="comment">// If the mouse is over a pickbox set correct mouse cursor.</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#af4815de7e7698ea116e8e2af51414050">PickboxContains</a>(m_camera->ScreenToWorld(event.GetPosition()))) {</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  foundPickbox = <span class="keyword">true</span>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  SetCursor(element-><a class="code" href="class_element.html#a245924c5be948397b101787dbea565ea">GetBestPickboxCursor</a>());</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!foundPickbox) {</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  SetCursor(wxCURSOR_ARROW);</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>();</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  }</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!foundPickbox) {</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abd94ea2ca7984d9a32d3ffd23837a323">IsPickboxShown</a>()) redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  element-><a class="code" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  element-><a class="code" href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">ResetPickboxes</a>();</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  SetCursor(wxCURSOR_ARROW);</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  }</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">case</span> MODE_MOVE_NODE: {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  element-><a class="code" href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd">MoveNode</a>(NULL, m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span> </div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  <span class="keywordflow">case</span> MODE_MOVE_PICKBOX: {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  element-><a class="code" href="class_element.html#a6f071b6dfd64721ca673bfbe1ca2d525">MovePickbox</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  }</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  }</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">case</span> MODE_MOVE_ELEMENT:</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  element-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="comment">// Move child nodes</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  std::vector<Element*> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = childList.begin(), itEnd = childList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  (*it)->MoveNode(element, m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  }</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="comment">// Text element motion</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; it++) {</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  text-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  }</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span> </div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">case</span> MODE_SELECTION_RECT: {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  wxPoint2DDouble currentPos = m_camera->ScreenToWorld(event.GetPosition());</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordtype">double</span> x, y, w, h;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">if</span>(currentPos.m_x < m_startSelRect.m_x) {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  x = currentPos.m_x;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  w = m_startSelRect.m_x - currentPos.m_x;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  x = m_startSelRect.m_x;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  w = currentPos.m_x - m_startSelRect.m_x;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">if</span>(currentPos.m_y < m_startSelRect.m_y) {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  y = currentPos.m_y;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  h = m_startSelRect.m_y - currentPos.m_y;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  y = m_startSelRect.m_y;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  h = currentPos.m_y - m_startSelRect.m_y;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span> </div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  m_selectionRect = wxRect2DDouble(x, y, w, h);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  redraw = <span class="keyword">true</span>;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span> </div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">if</span>(redraw) Redraw();</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  m_camera->UpdateMousePosition(event.GetPosition());</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  UpdateStatusBar();</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  m_timer->Start(); <span class="comment">// Restart the timer.</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span> }</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span> </div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="keywordtype">void</span> Workspace::OnMiddleDown(wxMouseEvent& event)</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span> {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="comment">// Set to drag mode.</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">case</span> MODE_INSERT: {</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  m_mode = MODE_DRAG_INSERT;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">case</span> MODE_INSERT_TEXT: {</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  m_mode = MODE_DRAG_INSERT_TEXT;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  m_mode = MODE_DRAG_PASTE;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  m_mode = MODE_DRAG;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  }</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  m_camera->StartTranslation(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  UpdateStatusBar();</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span> }</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span> </div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="keywordtype">void</span> Workspace::OnMiddleUp(wxMouseEvent& event)</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span> {</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT: {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT_TEXT: {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  m_mode = MODE_INSERT_TEXT;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  m_mode = MODE_PASTE;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  <span class="keywordflow">case</span> MODE_INSERT:</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">case</span> MODE_INSERT_TEXT:</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <span class="keywordflow">case</span> MODE_PASTE: {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="comment">// Does nothing.</span></div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keywordflow">default</span>: {</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  }</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  UpdateStatusBar();</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> }</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> </div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="keywordtype">void</span> Workspace::OnScroll(wxMouseEvent& event)</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> {</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">if</span>(event.GetWheelRotation() > 0)</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  m_camera->SetScale(event.GetPosition(), +0.05);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  m_camera->SetScale(event.GetPosition(), -0.05);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span> </div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  UpdateStatusBar();</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  Redraw();</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span> }</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span> </div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="keywordtype">void</span> Workspace::OnKeyDown(wxKeyEvent& event)</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span> {</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordtype">bool</span> insertingElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT || m_mode == MODE_INSERT_TEXT) insertingElement = <span class="keyword">true</span>;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordtype">char</span> key = <span class="keyword">event</span>.GetUnicodeKey();</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordflow">if</span>(key != WXK_NONE) {</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">switch</span>(key) {</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keywordflow">case</span> WXK_ESCAPE: <span class="comment">// Cancel operations.</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keywordflow">if</span>(m_mode == MODE_INSERT) {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  m_elementList.pop_back(); <span class="comment">// Removes the last element being inserted.</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  Redraw();</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(m_mode == MODE_INSERT_TEXT) {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  m_textList.pop_back();</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  m_mode = MODE_EDIT;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  Redraw();</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">case</span> WXK_DELETE: <span class="comment">// Delete selected elements</span></div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  DeleteSelectedElements();</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">case</span> <span class="charliteral">'A'</span>: {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <a class="code" href="class_text.html">Text</a>* newBus = <span class="keyword">new</span> <a class="code" href="class_text.html">Text</a>(m_camera->ScreenToWorld(event.GetPosition()));</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  m_textList.push_back(newBus);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  m_mode = MODE_INSERT_TEXT;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Text: Click to insert, ESC to cancel."</span>));</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  Redraw();</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  }</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keywordflow">case</span> <span class="charliteral">'F'</span>: {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_SHIFT) {</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  Fit();</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">case</span> <span class="charliteral">'R'</span>: <span class="comment">// Rotate the selected elements.</span></div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  {</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  RotateSelectedElements(event.GetModifiers() != wxMOD_SHIFT);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordflow">case</span> <span class="charliteral">'B'</span>: <span class="comment">// Insert a bus.</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <a class="code" href="class_bus.html">Bus</a>* newBus = <span class="keyword">new</span> <a class="code" href="class_bus.html">Bus</a>(m_camera->ScreenToWorld(event.GetPosition()),</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  wxString::Format(_(<span class="stringliteral">"Bus %d"</span>), GetElementNumber(ID_BUS)));</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  IncrementElementNumber(ID_BUS);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  m_elementList.push_back(newBus);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Bus: Click to insert, ESC to cancel."</span>));</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  Redraw();</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  }</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="keywordflow">case</span> <span class="charliteral">'L'</span>: {</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">if</span>(!event.ControlDown() && <span class="keyword">event</span>.ShiftDown()) { <span class="comment">// Insert a load.</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <a class="code" href="class_load.html">Load</a>* newLoad = <span class="keyword">new</span> <a class="code" href="class_load.html">Load</a>(wxString::Format(_(<span class="stringliteral">"Load %d"</span>), GetElementNumber(ID_LOAD)));</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  IncrementElementNumber(ID_LOAD);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  m_elementList.push_back(newLoad);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Load: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!event.ControlDown() && !<span class="keyword">event</span>.ShiftDown()) { <span class="comment">// Insert a power line.</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <a class="code" href="class_line.html">Line</a>* newLine = <span class="keyword">new</span> <a class="code" href="class_line.html">Line</a>(wxString::Format(_(<span class="stringliteral">"Line %d"</span>), GetElementNumber(ID_LINE)));</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  IncrementElementNumber(ID_LINE);</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  m_elementList.push_back(newLine);</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Line: Click on two buses, ESC to cancel."</span>));</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  }</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  Redraw();</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  }</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="comment">// Tests - Ctrl + Shift + L</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">if</span>(event.ControlDown() && <span class="keyword">event</span>.ShiftDown()) {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="comment">// Nothing...</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  }</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordflow">case</span> <span class="charliteral">'T'</span>: <span class="comment">// Insert a transformer.</span></div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  <a class="code" href="class_transformer.html">Transformer</a>* newTransformer =</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="keyword">new</span> <a class="code" href="class_transformer.html">Transformer</a>(wxString::Format(_(<span class="stringliteral">"Transformer %d"</span>), GetElementNumber(ID_TRANSFORMER)));</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  IncrementElementNumber(ID_TRANSFORMER);</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  m_elementList.push_back(newTransformer);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Transformer: Click on two buses, ESC to cancel."</span>));</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  Redraw();</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  }</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">case</span> <span class="charliteral">'G'</span>: <span class="comment">// Insert a generator.</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  {</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <a class="code" href="class_sync_generator.html">SyncGenerator</a>* newGenerator =</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keyword">new</span> <a class="code" href="class_sync_generator.html">SyncGenerator</a>(wxString::Format(_(<span class="stringliteral">"Generator %d"</span>), GetElementNumber(ID_SYNCGENERATOR)));</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  IncrementElementNumber(ID_SYNCGENERATOR);</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  m_elementList.push_back(newGenerator);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Generator: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  Redraw();</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="keywordflow">case</span> <span class="charliteral">'I'</span>: {</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_SHIFT) { <span class="comment">// Insert an inductor.</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <a class="code" href="class_inductor.html">Inductor</a>* newInductor =</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="keyword">new</span> <a class="code" href="class_inductor.html">Inductor</a>(wxString::Format(_(<span class="stringliteral">"Inductor %d"</span>), GetElementNumber(ID_INDUCTOR)));</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  IncrementElementNumber(ID_INDUCTOR);</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  m_elementList.push_back(newInductor);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Inductor: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  } <span class="keywordflow">else</span> <span class="comment">// Insert an induction motor.</span></div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  {</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <a class="code" href="class_ind_motor.html">IndMotor</a>* newIndMotor =</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keyword">new</span> <a class="code" href="class_ind_motor.html">IndMotor</a>(wxString::Format(_(<span class="stringliteral">"Induction motor %d"</span>), GetElementNumber(ID_INDMOTOR)));</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  IncrementElementNumber(ID_INDMOTOR);</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  m_elementList.push_back(newIndMotor);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Induction Motor: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  Redraw();</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">case</span> <span class="charliteral">'K'</span>: <span class="comment">// Insert a synchronous condenser.</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  {</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <a class="code" href="class_sync_motor.html">SyncMotor</a>* newSyncCondenser =</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keyword">new</span> <a class="code" href="class_sync_motor.html">SyncMotor</a>(wxString::Format(_(<span class="stringliteral">"Synchronous condenser %d"</span>), GetElementNumber(ID_SYNCMOTOR)));</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  IncrementElementNumber(ID_SYNCMOTOR);</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  m_elementList.push_back(newSyncCondenser);</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Synchronous Condenser: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  Redraw();</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">case</span> <span class="charliteral">'C'</span>: {</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_SHIFT) { <span class="comment">// Insert a capacitor.</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <a class="code" href="class_capacitor.html">Capacitor</a>* newCapacitor =</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keyword">new</span> <a class="code" href="class_capacitor.html">Capacitor</a>(wxString::Format(_(<span class="stringliteral">"Capacitor %d"</span>), GetElementNumber(ID_CAPACITOR)));</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  IncrementElementNumber(ID_CAPACITOR);</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  m_elementList.push_back(newCapacitor);</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  m_mode = MODE_INSERT;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Insert Capacitor: Click on a buses, ESC to cancel."</span>));</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  Redraw();</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_CONTROL) { <span class="comment">// Copy.</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  CopySelection();</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  }</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">case</span> <span class="charliteral">'V'</span>: {</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">if</span>(!insertingElement) {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordflow">if</span>(event.GetModifiers() == wxMOD_CONTROL) {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  Paste();</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  }</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  }</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  }</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  }</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span> </div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  UpdateStatusBar();</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> }</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span> </div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span> <span class="keywordtype">void</span> Workspace::UpdateStatusBar()</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span> {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="keywordflow">switch</span>(m_mode) {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="keywordflow">case</span> MODE_DRAG: {</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"MODE: DRAG"</span>), 1);</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">case</span> MODE_PASTE:</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="keywordflow">case</span> MODE_DRAG_PASTE: {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"MODE: PASTE"</span>), 1);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  }</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span> </div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keywordflow">case</span> MODE_INSERT:</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">case</span> MODE_INSERT_TEXT:</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT:</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="keywordflow">case</span> MODE_DRAG_INSERT_TEXT: {</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"MODE: INSERT"</span>), 1);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span> </div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="keywordflow">case</span> MODE_MOVE_ELEMENT:</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <span class="keywordflow">case</span> MODE_MOVE_PICKBOX:</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">case</span> MODE_MOVE_NODE:</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <span class="keywordflow">case</span> MODE_SELECTION_RECT:</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <span class="keywordflow">case</span> MODE_EDIT: {</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  m_statusBar->SetStatusText(wxT(<span class="stringliteral">""</span>));</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"MODE: EDIT"</span>), 1);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  }</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span> </div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  m_statusBar->SetStatusText(wxString::Format(_(<span class="stringliteral">"ZOOM: %d%%"</span>), (<span class="keywordtype">int</span>)(m_camera->GetScale() * 100.0)), 2);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  m_statusBar->SetStatusText(</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  wxString::Format(wxT(<span class="stringliteral">"X: %.1f Y: %.1f"</span>), m_camera->GetMousePosition().m_x, m_camera->GetMousePosition().m_y),</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  3);</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span> }</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span> </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> <span class="keywordtype">void</span> Workspace::OnPopupClick(wxCommandEvent& event)</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span> {</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  wxMenu* menu = <span class="keyword">static_cast<</span>wxMenu*<span class="keyword">></span>(<span class="keyword">event</span>.GetEventObject());</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <a class="code" href="class_element.html">Element</a>* element = <span class="keyword">static_cast<</span><a class="code" href="class_element.html">Element</a>*<span class="keyword">></span>(menu->GetClientData());</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  <span class="keywordflow">switch</span>(event.GetId()) {</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a>: {</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ae1652eded3ccbd241a783691117418b2">ShowForm</a>(<span class="keyword">this</span>, element)) UpdateTextElements();</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049af05f38a3b3fea5d6da036dce48e9d960">ID_LINE_ADD_NODE</a>: {</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <a class="code" href="class_line.html">Line</a>* line = <span class="keyword">static_cast<</span><a class="code" href="class_line.html">Line</a>*<span class="keyword">></span>(element);</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  line->AddNode(m_camera->GetMousePosition());</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  Redraw();</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a1a8f8c62fc201993f6a605ff06314803">ID_LINE_REMOVE_NODE</a>: {</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <a class="code" href="class_line.html">Line</a>* line = <span class="keyword">static_cast<</span><a class="code" href="class_line.html">Line</a>*<span class="keyword">></span>(element);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  line->RemoveNode(m_camera->GetMousePosition());</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  Redraw();</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a9d58b2fe374676b88029d401da0d77a8">ID_ROTATE_CLOCK</a>: {</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  element-><a class="code" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Rotate</a>();</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <a class="code" href="class_element.html">Element</a>* iElement = *it;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="comment">// Parent's element rotating...</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)iElement-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); i++) {</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <a class="code" href="class_element.html">Element</a>* parent = iElement-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[i];</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <span class="keywordflow">if</span>(parent == element) {</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  iElement-><a class="code" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">RotateNode</a>(parent);</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  }</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  }</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  Redraw();</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049adeee9ba1a6f37ff0622ca94a52e40551">ID_ROTATE_COUNTERCLOCK</a>: {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  element-><a class="code" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Rotate</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <a class="code" href="class_element.html">Element</a>* iElement = *it;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <span class="comment">// Parent's element rotating...</span></div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)iElement-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); i++) {</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <a class="code" href="class_element.html">Element</a>* parent = iElement-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[i];</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  <span class="keywordflow">if</span>(parent == element) {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  iElement-><a class="code" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">RotateNode</a>(parent, <span class="keyword">false</span>);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  }</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  }</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  }</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  Redraw();</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <span class="keywordflow">case</span> <a class="code" href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a80c989d88bc686137e96564dfad6166a">ID_DELETE</a>: {</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <a class="code" href="class_element.html">Element</a>* iElement = *it;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span> </div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keywordflow">if</span>(element == iElement) {</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="comment">// Remove child/parent.</span></div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  std::vector<Element*> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itc = childList.begin(), itEnd = childList.end(); itc != itEnd; ++itc) {</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <a class="code" href="class_element.html">Element</a>* child = *itc;</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="keywordflow">if</span>(child) {</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  child-><a class="code" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">RemoveParent</a>(element);</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  element-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(child);</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  }</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  }</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  std::vector<Element*> parentList = element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itp = parentList.begin(), itEnd = parentList.end(); itp != itEnd; ++itp) {</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <a class="code" href="class_element.html">Element</a>* parent = *itp;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  parent-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(element);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  }</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  }</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span> </div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itt = m_textList.begin(); itt != m_textList.end(); ++itt) {</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <a class="code" href="class_text.html">Text</a>* text = *itt;</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keywordflow">if</span>(text->GetElement() == element) {</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  m_textList.erase(itt--);</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keywordflow">if</span>(text) <span class="keyword">delete</span> text;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  }</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  }</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span> </div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  m_elementList.erase(it);</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">if</span>(element) <span class="keyword">delete</span> element;</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  menu->SetClientData(NULL);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  }</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  }</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  } <span class="keywordflow">break</span>;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  }</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span> }</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span> </div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span> <span class="keywordtype">void</span> Workspace::RotateSelectedElements(<span class="keywordtype">bool</span> clockwise)</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span> {</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="comment">// Parent's element rotating...</span></div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); i++) {</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  <a class="code" href="class_element.html">Element</a>* parent = element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[i];</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">if</span>(parent) { <span class="comment">// Check if parent is not null</span></div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordflow">if</span>(parent-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  element-><a class="code" href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">RotateNode</a>(parent, clockwise);</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="comment">// Update the positions used on motion action, the element will not be necessarily</span></div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <span class="comment">// moved.</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->GetMousePosition());</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  }</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  }</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  }</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  element-><a class="code" href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Rotate</a>(clockwise);</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->GetMousePosition());</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  }</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  }</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span> </div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="comment">// Rotate text element</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(); it != m_textList.end(); it++) {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  text-><a class="code" href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Rotate</a>(clockwise);</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  text-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(m_camera->GetMousePosition());</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  }</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  }</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  Redraw();</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span> }</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span> </div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span> <span class="keywordtype">void</span> Workspace::DeleteSelectedElements()</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> {</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="comment">// Don't set the end of the list at the loop's begin.</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); ++it) {</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span> </div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <span class="comment">// Remove child/parent.</span></div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  std::vector<Element*> childList = element-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itc = childList.begin(), itEnd = childList.end(); itc != itEnd; ++itc) {</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  <a class="code" href="class_element.html">Element</a>* child = *itc;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keywordflow">if</span>(child) {</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  child-><a class="code" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">RemoveParent</a>(element);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  element-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(child);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  }</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  }</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  std::vector<Element*> parentList = element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>();</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itp = parentList.begin(), itEnd = parentList.end(); itp != itEnd; ++itp) {</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  <a class="code" href="class_element.html">Element</a>* parent = *itp;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  parent-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(element);</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  }</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  }</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> </div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> itt = m_textList.begin(); itt != m_textList.end(); ++itt) {</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <a class="code" href="class_text.html">Text</a>* text = *itt;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  <span class="keywordflow">if</span>(text->GetElement() == element) {</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  m_textList.erase(itt--);</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="keywordflow">if</span>(text) <span class="keyword">delete</span> text;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  }</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  }</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> </div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  m_elementList.erase(it--);</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <span class="keywordflow">if</span>(element) <span class="keyword">delete</span> element;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  }</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  }</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> </div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(); it != m_textList.end(); ++it) {</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  m_textList.erase(it--);</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordflow">if</span>(text) <span class="keyword">delete</span> text;</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  }</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  }</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  Redraw();</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> }</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> </div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> <span class="keywordtype">bool</span> Workspace::GetElementsCorners(wxPoint2DDouble& leftUpCorner,</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  wxPoint2DDouble& rightDownCorner,</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  std::vector<Element*> elementList)</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> {</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <span class="keywordflow">if</span>(elementList.size() == 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> </div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  elementList[0]->CalculateBoundaries(leftUpCorner, rightDownCorner);</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin() + 1, itEnd = elementList.end(); it != itEnd; it++) {</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  wxPoint2DDouble leftUp;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  wxPoint2DDouble rightDown;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  element-><a class="code" href="class_element.html#a57f5771fd003020fef3866a1d1dc7487">CalculateBoundaries</a>(leftUp, rightDown);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keywordflow">if</span>(leftUp.m_x < leftUpCorner.m_x) leftUpCorner.m_x = leftUp.m_x;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <span class="keywordflow">if</span>(leftUp.m_y < leftUpCorner.m_y) leftUpCorner.m_y = leftUp.m_y;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  <span class="keywordflow">if</span>(rightDown.m_x > rightDownCorner.m_x) rightDownCorner.m_x = rightDown.m_x;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  <span class="keywordflow">if</span>(rightDown.m_y > rightDownCorner.m_y) rightDownCorner.m_y = rightDown.m_y;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  }</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> }</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> </div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> <span class="keywordtype">void</span> Workspace::Fit()</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> {</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  wxPoint2DDouble leftUpCorner(0, 0);</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  wxPoint2DDouble rightDownCorner(0, 0);</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  std::vector<Element*> elementList = GetElementList();</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  elementList.push_back(*it);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  }</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> </div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <span class="keywordflow">if</span>(!GetElementsCorners(leftUpCorner, rightDownCorner, elementList)) <span class="keywordflow">return</span>;</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  wxPoint2DDouble middleCoords = (leftUpCorner + rightDownCorner) / 2.0;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> </div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordtype">int</span> width = 0.0;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  <span class="keywordtype">int</span> height = 0.0;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  GetSize(&width, &height);</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> </div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="keywordtype">double</span> scaleX = double(width) / (rightDownCorner.m_x - leftUpCorner.m_x);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordtype">double</span> scaleY = double(height) / (rightDownCorner.m_y - leftUpCorner.m_y);</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> </div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <span class="keywordtype">double</span> scale = scaleX < scaleY ? scaleX : scaleY;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  <span class="keywordflow">if</span>(scale > m_camera->GetZoomMax()) scale = m_camera->GetZoomMax();</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  <span class="keywordflow">if</span>(scale < m_camera->GetZoomMin()) scale = m_camera->GetZoomMin();</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> </div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  m_camera->SetScale(scale);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> </div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  m_camera->StartTranslation(middleCoords);</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  m_camera->SetTranslation(wxPoint2DDouble(width / 2, height / 2));</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  Redraw();</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> }</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> </div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> <span class="keywordtype">void</span> Workspace::ValidateBusesVoltages(<a class="code" href="class_element.html">Element</a>* initialBus)</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> {</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  <span class="keywordtype">double</span> nominalVoltage = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(initialBus)->GetElectricalData().nominalVoltage;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  <a class="code" href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a> nominalVoltageUnit = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(initialBus)->GetElectricalData().nominalVoltageUnit;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> </div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); it++) {</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  <a class="code" href="class_element.html">Element</a>* child = *it;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> </div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*child) == <span class="keyword">typeid</span>(<a class="code" href="class_line.html">Line</a>)) {</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <span class="keywordflow">if</span>(child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0] && child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1]) {</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data1 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->GetElectricalData();</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  <a class="code" href="struct_bus_electrical_data.html">BusElectricalData</a> data2 = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->GetElectricalData();</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> </div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="keywordflow">if</span>(data1.nominalVoltage != data2.nominalVoltage ||</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  data1.nominalVoltageUnit != data2.nominalVoltageUnit) {</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  data1.nominalVoltage = nominalVoltage;</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  data2.nominalVoltage = nominalVoltage;</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  data1.nominalVoltageUnit = nominalVoltageUnit;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  data2.nominalVoltageUnit = nominalVoltageUnit;</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[0])->SetElectricalData(data1);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[1])->SetElectricalData(data2);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> </div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  it = m_elementList.begin(); <span class="comment">// Restart search.</span></div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  }</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  }</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  }</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  }</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> </div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="comment">// ValidateElementsVoltages();</span></div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> </div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> <span class="keywordtype">void</span> Workspace::ValidateElementsVoltages()</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> {</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(); it != m_elementList.end(); it++) {</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  <a class="code" href="class_power_element.html">PowerElement</a>* child = *it;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span> </div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  std::vector<double> nominalVoltage;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  std::vector<ElectricalUnit> nominalVoltageUnit;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); i++) {</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  <a class="code" href="class_bus.html">Bus</a>* parent = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(child-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[i]);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  <span class="keywordflow">if</span>(parent) {</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  nominalVoltage.push_back(parent->GetElectricalData().nominalVoltage);</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  nominalVoltageUnit.push_back(parent->GetElectricalData().nominalVoltageUnit);</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  }</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  }</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  child-><a class="code" href="class_power_element.html#a0730506d0417089d69f7ce64b05daed4">SetNominalVoltage</a>(nominalVoltage, nominalVoltageUnit);</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  }</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span> }</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span> </div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> <span class="keywordtype">bool</span> Workspace::RunPowerFlow()</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> {</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <a class="code" href="class_power_flow.html">PowerFlow</a> pf(GetElementList());</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <span class="keywordtype">bool</span> result = pf.RunGaussSeidel();</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <span class="keywordflow">if</span>(!result) {</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, pf.GetErrorMessage(), _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>  msgDialog.ShowModal();</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  }</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> </div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  UpdateTextElements();</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  Redraw();</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> </div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> }</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> </div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> <span class="keywordtype">void</span> Workspace::UpdateTextElements()</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> {</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  text->UpdateText(m_properties->GetSimulationPropertiesData().basePower);</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  }</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> }</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> </div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> <span class="keywordtype">void</span> Workspace::CopySelection()</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> {</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  UpdateElementsID();</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  std::vector<Element*> selectedElements;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  <span class="comment">// The buses need to be numerated to associate the child's parents to the copies.</span></div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="keywordtype">int</span> busNumber = 0;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <span class="keywordflow">if</span>(<span class="keyword">typeid</span>(*element) == <span class="keyword">typeid</span>(<a class="code" href="class_bus.html">Bus</a>)) {</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  <a class="code" href="class_bus.html">Bus</a>* bus = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(element);</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="keyword">auto</span> data = bus->GetElectricalData();</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  data.number = busNumber;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  bus->SetElectricalData(data);</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  busNumber++;</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  }</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  selectedElements.push_back(element);</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  }</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  }</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <span class="keywordflow">if</span>(text-><a class="code" href="class_element.html#ac42604083db300d20c010b50084de91b">IsSelected</a>()) {</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  selectedElements.push_back(text);</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  }</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  }</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <a class="code" href="class_element_data_object.html">ElementDataObject</a>* dataObject = <span class="keyword">new</span> <a class="code" href="class_element_data_object.html">ElementDataObject</a>(selectedElements);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  wxTheClipboard->SetData(dataObject);</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  wxTheClipboard->Close();</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> }</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> </div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> <span class="keywordtype">bool</span> Workspace::Paste()</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> {</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <span class="keywordflow">if</span>(wxTheClipboard->Open()) {</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <a class="code" href="class_element_data_object.html">ElementDataObject</a> dataObject;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> </div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  <span class="keywordflow">if</span>(wxTheClipboard->IsSupported(wxDataFormat(<span class="stringliteral">"PSPCopy"</span>))) {</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  <span class="keywordflow">if</span>(!wxTheClipboard->GetData(dataObject)) {</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  wxMessageDialog dialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to paste from clipboard."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  wxOK | wxCENTER | wxICON_ERROR, wxDefaultPosition);</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  dialog.ShowModal();</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  wxTheClipboard->Close();</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  }</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  wxTheClipboard->Close();</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  }</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  wxTheClipboard->Close();</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> </div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  UnselectAll();</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> </div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  std::vector<Element*> pastedElements;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  <a class="code" href="struct_elements_lists.html">ElementsLists</a>* elementsLists = dataObject.GetElementsLists();</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> </div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <span class="comment">// Paste buses (parents).</span></div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  <span class="keyword">auto</span> parentList = elementsLists->parentList;</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  std::vector<Bus*> pastedBusList; <span class="comment">// To set new parents;</span></div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = parentList.begin(), itEnd = parentList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  <a class="code" href="class_element.html">Element</a>* copy = (*it)-><a class="code" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">GetCopy</a>();</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  <span class="keywordflow">if</span>(copy) {</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  pastedElements.push_back(copy);</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  pastedBusList.push_back(static_cast<Bus*>(copy));</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  m_elementList.push_back(static_cast<PowerElement*>(copy));</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  }</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  }</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span> </div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  <span class="comment">// Paste other elements.</span></div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  <span class="keyword">auto</span> elementLists = elementsLists->elementList;</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementLists.begin(), itEnd = elementLists.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  <a class="code" href="class_element.html">Element</a>* copy = (*it)-><a class="code" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">GetCopy</a>();</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  <span class="keywordflow">if</span>(copy) {</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  <span class="comment">// Check if is text element</span></div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  <span class="keywordflow">if</span>(<a class="code" href="class_text.html">Text</a>* text = dynamic_cast<Text*>(copy)) {</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  <span class="comment">// Check if element associated with the text exists.</span></div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  <span class="keywordtype">bool</span> elementExist = <span class="keyword">false</span>;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)m_elementList.size(); i++) {</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  <span class="keywordflow">if</span>(text->GetElement() == m_elementList[i]) {</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  elementExist = <span class="keyword">true</span>;</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  }</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  }</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  <span class="keywordflow">if</span>(elementExist) {</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  pastedElements.push_back(copy);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  m_textList.push_back(text);</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  }</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>  <span class="comment">// Change the parent if copied, otherwise remove it.</span></div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j = 0; j < (int)copy-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); j++) {</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>  <a class="code" href="class_bus.html">Bus</a>* currentParent = <span class="keyword">static_cast<</span><a class="code" href="class_bus.html">Bus</a>*<span class="keyword">></span>(copy-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[j]);</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>  <span class="keywordflow">if</span>(currentParent) {</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>  <span class="keywordtype">int</span> parentID = currentParent-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>();</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>  <span class="keywordtype">bool</span> parentCopied = <span class="keyword">false</span>;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k = 0; k < (int)pastedBusList.size(); k++) {</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  <a class="code" href="class_bus.html">Bus</a>* newParent = pastedBusList[k];</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  <span class="keywordflow">if</span>(parentID == newParent-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>()) {</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>  parentCopied = <span class="keyword">true</span>;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  copy-><a class="code" href="class_element.html#a74ec9a279ac0127550e00941206dddb1">ReplaceParent</a>(currentParent, newParent);</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  }</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  }</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  <span class="keywordflow">if</span>(!parentCopied) copy-><a class="code" href="class_element.html#a9504437b60faf2c5a27584de8a24810c">RemoveParent</a>(currentParent);</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  }</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  }</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> </div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  pastedElements.push_back(copy);</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  m_elementList.push_back(static_cast<PowerElement*>(copy));</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  }</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  }</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>  }</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> </div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>  <span class="comment">// Update buses childs</span></div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = pastedBusList.begin(), itEnd = pastedBusList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>  <a class="code" href="class_bus.html">Bus</a>* bus = *it;</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>  std::vector<Element*> childList = bus-><a class="code" href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">GetChildList</a>();</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = childList.begin(), itEnd = childList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>  <a class="code" href="class_element.html">Element</a>* currentChild = *it;</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>  <span class="keywordtype">int</span> childID = currentChild-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>();</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>  <span class="keywordtype">bool</span> childCopied = <span class="keyword">false</span>;</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)pastedElements.size(); i++) {</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>  <a class="code" href="class_element.html">Element</a>* newChild = pastedElements[i];</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>  <span class="keywordflow">if</span>(childID == newChild-><a class="code" href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">GetID</a>()) {</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>  childCopied = <span class="keyword">true</span>;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>  bus-><a class="code" href="class_element.html#ad5f4bee2e241c430a643f46dadf3d3f5">ReplaceChild</a>(currentChild, newChild);</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>  }</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>  }</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  <span class="keywordflow">if</span>(!childCopied) bus-><a class="code" href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">RemoveChild</a>(currentChild);</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>  }</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>  }</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span> </div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  <span class="comment">// Move elements (and nodes) to the mouse position.</span></div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  <span class="comment">// The start position it's the center of the pasted objects.</span></div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  wxPoint2DDouble leftUpCorner, rightDownCorner;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  GetElementsCorners(leftUpCorner, rightDownCorner, pastedElements);</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  wxPoint2DDouble startPosition = (leftUpCorner + rightDownCorner) / 2.0;</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = pastedElements.begin(), itEnd = pastedElements.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  element-><a class="code" href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">StartMove</a>(startPosition);</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  element-><a class="code" href="class_element.html#abe884d99d12d5252e18956162115b025">Move</a>(m_camera->GetMousePosition());</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i < (int)element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>().size(); i++) {</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  <a class="code" href="class_element.html">Element</a>* parent = element-><a class="code" href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">GetParentList</a>()[i];</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  element-><a class="code" href="class_element.html#a870e266e0457bacbc3f7ef1fb70c6fdd">MoveNode</a>(parent, m_camera->GetMousePosition());</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  }</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  }</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  wxMessageDialog dialog(<span class="keyword">this</span>, _(<span class="stringliteral">"It was not possible to paste from clipboard."</span>), _(<span class="stringliteral">"Error"</span>),</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  wxOK | wxCENTER | wxICON_ERROR, wxDefaultPosition);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>  dialog.ShowModal();</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  }</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> </div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  UpdateElementsID();</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  m_mode = MODE_PASTE;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  m_statusBar->SetStatusText(_(<span class="stringliteral">"Click to paste."</span>));</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  UpdateStatusBar();</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  Redraw();</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span> }</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> </div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> <span class="keywordtype">void</span> Workspace::UnselectAll()</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span> {</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; it++) {</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>  element-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  }</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; it++) {</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  text-><a class="code" href="class_element.html#a5279e5a513391d399d576bcb83df736b">SetSelected</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  }</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span> }</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span> </div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span> <span class="keywordtype">void</span> Workspace::UpdateElementsID()</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span> {</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  <span class="keywordtype">int</span> <span class="keywordtype">id</span> = 0;</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  element-><a class="code" href="class_element.html#a9aa2fec8b6c7bef4bf75b9f86fbb76f2">SetID</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  <span class="keywordtype">id</span>++;</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  }</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  <a class="code" href="class_text.html">Text</a>* text = *it;</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  text-><a class="code" href="class_element.html#a9aa2fec8b6c7bef4bf75b9f86fbb76f2">SetID</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  <span class="keywordtype">id</span>++;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  }</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> }</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span> <span class="keywordtype">void</span> Workspace::OnTimer(wxTimerEvent& event)</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span> {</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  <span class="keywordflow">if</span>(m_tipWindow) {</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  m_tipWindow->Close();</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  m_tipWindow = NULL;</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  }</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  <span class="keywordflow">if</span>(m_mode == MODE_EDIT) {</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  <a class="code" href="class_element.html">Element</a>* element = *it;</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Contains</a>(m_camera->GetMousePosition())) {</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  wxString tipText = element-><a class="code" href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">GetTipText</a>();</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>  <span class="keywordflow">if</span>(!tipText.IsEmpty()) {</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  m_tipWindow = <span class="keyword">new</span> wxTipWindow(<span class="keyword">this</span>, tipText, 10000, &m_tipWindow);</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  <span class="comment">// Creates a very tiny bounding rect to remove the tip on any mouse movement.</span></div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  m_tipWindow->SetBoundingRect(wxRect(wxGetMousePosition(), wxSize(1, 1)));</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>  }</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  }</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  }</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  }</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> </div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  m_timer->Stop();</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> }</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> </div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> <span class="keywordtype">void</span> Workspace::SetTextList(std::vector<Text*> textList)</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> {</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  m_textList.clear();</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = textList.begin(), itEnd = textList.end(); it != itEnd; ++it) m_textList.push_back(*it);</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span> </div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  UpdateTextElements();</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> }</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span> </div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span> <span class="keywordtype">void</span> Workspace::SetElementList(std::vector<Element*> elementList)</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> {</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  m_elementList.clear();</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it)</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  m_elementList.push_back(static_cast<PowerElement*>(*it));</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> }</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span> </div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span> <span class="keywordtype">void</span> Workspace::OnIdle(wxIdleEvent& event)</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> {</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  <span class="comment">// TODO: Find other solution to text displayed wrong on opened file.</span></div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>  <span class="keywordflow">if</span>(m_justOpened) {</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  m_justOpened = <span class="keyword">false</span>;</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  UpdateTextElements();</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  Redraw();</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  }</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> }</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> </div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span> std::vector<Element*> Workspace::GetAllElements()<span class="keyword"> const</span></div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span> <span class="keyword"></span>{</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>  std::vector<Element*> allElements;</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> </div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) allElements.push_back(*it);</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) allElements.push_back(*it);</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> </div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  <span class="keywordflow">return</span> allElements;</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> }</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> </div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> <span class="keywordtype">bool</span> Workspace::RunFault()</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> {</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>  <a class="code" href="class_fault.html">Fault</a> fault(GetElementList());</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>  <span class="keywordtype">bool</span> result = fault.RunFaultCalculation(100e6);</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  <span class="keywordflow">if</span>(!result) {</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, fault.GetErrorMessage(), _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  msgDialog.ShowModal();</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  }</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span> </div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>  UpdateTextElements();</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  Redraw();</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span> </div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span> }</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span> </div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span> std::vector<Element*> Workspace::GetElementList()<span class="keyword"> const</span></div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span> <span class="keyword"></span>{</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  std::vector<Element*> elementList;</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) elementList.push_back(*it);</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  <span class="keywordflow">return</span> elementList;</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span> }</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span> </div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span> <span class="keywordtype">bool</span> Workspace::RunSCPower()</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> {</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>  <a class="code" href="class_fault.html">Fault</a> fault(GetElementList());</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>  <span class="keywordtype">bool</span> result = fault.RunSCPowerCalcutation(100e6);</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>  <span class="keywordflow">if</span>(!result) {</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, fault.GetErrorMessage(), _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>  msgDialog.ShowModal();</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>  }</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span> </div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>  UpdateTextElements();</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>  Redraw();</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span> </div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span> }</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span> </div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span> <span class="keywordtype">bool</span> Workspace::RunStability()</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span> {</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>  <span class="comment">// Run power flow before stability.</span></div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  RunPowerFlow();</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span> </div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  <a class="code" href="class_electromechanical.html">Electromechanical</a> stability(<span class="keyword">this</span>, GetElementList(), m_properties->GetSimulationPropertiesData());</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  <span class="keywordtype">bool</span> result = stability.RunStabilityCalculation();</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  <span class="keywordflow">if</span>(!result) {</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, stability.GetErrorMessage(), _(<span class="stringliteral">"Error"</span>), wxOK | wxCENTRE | wxICON_ERROR);</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>  msgDialog.ShowModal();</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>  }</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>  m_stabilityTimeVector.clear();</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>  m_stabilityTimeVector = stability.GetTimeVector();</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> </div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>  <span class="comment">// Run power flow after stability.</span></div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  RunPowerFlow();</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> </div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>  wxMessageDialog msgDialog(<span class="keyword">this</span>, _(<span class="stringliteral">"Do you wish to open the stability graphics?"</span>), _(<span class="stringliteral">"Question"</span>),</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>  wxYES_NO | wxCENTRE | wxICON_QUESTION);</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>  <span class="keywordflow">if</span>(msgDialog.ShowModal() == wxID_YES) {</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>  std::vector<ElementPlotData> plotDataList;</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>  <a class="code" href="class_power_element.html">PowerElement</a>* element = *it;</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a> plotData;</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>  <span class="keywordflow">if</span>(element-><a class="code" href="class_power_element.html#acadf6712b430f9fadfbd7015903eaeaf">GetPlotData</a>(plotData)) plotDataList.push_back(plotData);</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>  }</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>  <a class="code" href="class_element_plot_data.html">ElementPlotData</a> tests(_(<span class="stringliteral">"Error"</span>), ElementPlotData::CT_TEST);</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>  tests.AddData(stability.m_wErrorVector, _(<span class="stringliteral">"Speed error"</span>));</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>  tests.AddData(stability.m_sdCVector, _(<span class="stringliteral">"Sd"</span>));</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>  tests.AddData(stability.m_sqCVector, _(<span class="stringliteral">"Sq"</span>));</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  tests.AddData(stability.m_numItVector, _(<span class="stringliteral">"Number iterations"</span>));</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  plotDataList.push_back(tests);</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> </div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  <a class="code" href="class_chart_view.html">ChartView</a>* cView = <span class="keyword">new</span> <a class="code" href="class_chart_view.html">ChartView</a>(<span class="keyword">this</span>, plotDataList, m_stabilityTimeVector);</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>  cView->Show();</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>  }</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> </div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> }</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> <span class="keywordtype">void</span> Workspace::OnMiddleDoubleClick(wxMouseEvent& event)</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span> {</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>  Fit();</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>  <span class="keyword">event</span>.Skip();</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> }</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> </div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span> <span class="keywordtype">bool</span> Workspace::RunStaticStudies()</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span> {</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>  <span class="keywordtype">bool</span> pfStatus, faultStatus, scStatus;</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>  pfStatus = faultStatus = scStatus = <span class="keyword">false</span>;</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> </div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>  pfStatus = RunPowerFlow();</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> </div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>  <span class="keywordflow">if</span>(m_properties->GetSimulationPropertiesData().faultAfterPowerFlow) {</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>  <span class="keywordflow">if</span>(pfStatus) faultStatus = RunFault();</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>  faultStatus = <span class="keyword">true</span>;</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  }</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span> </div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>  <span class="keywordflow">if</span>(m_properties->GetSimulationPropertiesData().scPowerAfterPowerFlow) {</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>  <span class="keywordflow">if</span>(pfStatus) scStatus = RunSCPower();</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>  scStatus = <span class="keyword">true</span>;</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>  }</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span> </div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  <span class="keywordflow">if</span>(pfStatus && faultStatus && scStatus) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span> </div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> }</div><div class="ttc" id="class_text_html_a51c55b9272f653cfc3cdafe665d5dde0"><div class="ttname"><a href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Text::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const</div><div class="ttdoc">Checks if the element contains a position. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00047">Text.cpp:47</a></div></div> +<div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdoc">Element that shows power element informations in workspace. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00072">Text.h:72</a></div></div> <div class="ttc" id="class_element_html_ab8bf35b4a205fa58772402cea7fad89c"><div class="ttname"><a href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">Element::ShowPickbox</a></div><div class="ttdeci">void ShowPickbox(bool showPickbox=true)</div><div class="ttdoc">Set if the pickbox is shown. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00161">Element.h:161</a></div></div> -<div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00057">PropertiesData.h:57</a></div></div> +<div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdoc">General and simulation data manager. </div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00064">PropertiesData.h:64</a></div></div> <div class="ttc" id="class_element_html_abe884d99d12d5252e18956162115b025"><div class="ttname"><a href="class_element.html#abe884d99d12d5252e18956162115b025">Element::Move</a></div><div class="ttdeci">virtual void Move(wxPoint2DDouble position)</div><div class="ttdoc">Move the element other position. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00123">Element.cpp:123</a></div></div> <div class="ttc" id="class_element_html_aa40c60c03d6a76639d8c6f6bab86720e"><div class="ttname"><a href="class_element.html#aa40c60c03d6a76639d8c6f6bab86720e">Element::AddPoint</a></div><div class="ttdeci">virtual void AddPoint(wxPoint2DDouble point)</div><div class="ttdoc">Add point to the list of points that connect the element to the bus. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00318">Element.h:318</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> <div class="ttc" id="_workspace_8h_html"><div class="ttname"><a href="_workspace_8h.html">Workspace.h</a></div></div> <div class="ttc" id="class_element_html_a5279e5a513391d399d576bcb83df736b"><div class="ttname"><a href="class_element.html#a5279e5a513391d399d576bcb83df736b">Element::SetSelected</a></div><div class="ttdeci">void SetSelected(bool selected=true)</div><div class="ttdoc">Set element selection. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00146">Element.h:146</a></div></div> <div class="ttc" id="class_text_html_afe1f86a497f34cee4809cbd7fda24dc3"><div class="ttname"><a href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Text::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00162">Text.cpp:162</a></div></div> +<div class="ttc" id="_properties_data_8h_html"><div class="ttname"><a href="_properties_data_8h.html">PropertiesData.h</a></div></div> <div class="ttc" id="class_element_html_a7dce6c1b97facecf3e3b2f1555858b09"><div class="ttname"><a href="class_element.html#a7dce6c1b97facecf3e3b2f1555858b09">Element::GetParentList</a></div><div class="ttdeci">virtual std::vector< Element * > GetParentList() const</div><div class="ttdoc">Get the parent list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00506">Element.h:506</a></div></div> -<div class="ttc" id="class_power_flow_html"><div class="ttname"><a href="class_power_flow.html">PowerFlow</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_flow_8h_source.html#l00026">PowerFlow.h:26</a></div></div> -<div class="ttc" id="_electromechanical_8h_html"><div class="ttname"><a href="_electromechanical_8h.html">Electromechanical.h</a></div><div class="ttdoc">Calculates the electromechanical transient based on disturbances (e.g. system fault). </div></div> +<div class="ttc" id="class_power_flow_html"><div class="ttname"><a href="class_power_flow.html">PowerFlow</a></div><div class="ttdoc">Calculate the power flow. </div><div class="ttdef"><b>Definition:</b> <a href="_power_flow_8h_source.html#l00033">PowerFlow.h:33</a></div></div> +<div class="ttc" id="_electromechanical_8h_html"><div class="ttname"><a href="_electromechanical_8h.html">Electromechanical.h</a></div></div> +<div class="ttc" id="_transformer_8h_html"><div class="ttname"><a href="_transformer_8h.html">Transformer.h</a></div></div> <div class="ttc" id="class_element_html_aa79a7c1b219ce07f39ef3848e61c6eb0"><div class="ttname"><a href="class_element.html#aa79a7c1b219ce07f39ef3848e61c6eb0">Element::GetChildList</a></div><div class="ttdeci">virtual std::vector< Element * > GetChildList() const</div><div class="ttdoc">Get the Child list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00511">Element.h:511</a></div></div> <div class="ttc" id="class_element_html_a3be3ed2876d3bb547c43caab95353f33"><div class="ttname"><a href="class_element.html#a3be3ed2876d3bb547c43caab95353f33">Element::ResetPickboxes</a></div><div class="ttdeci">virtual void ResetPickboxes()</div><div class="ttdoc">Remove the pickboxes. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00393">Element.h:393</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049ad3186b31000d6bac43a0a20725e26b42">ID_EDIT_ELEMENT</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00052">Element.h:52</a></div></div> @@ -110,9 +112,10 @@ $(document).ready(function(){initNavTree('_workspace_8cpp_source.html','');}); <div class="ttc" id="class_element_html_a499c3b52be27d2bf436a13b6f5353b9c"><div class="ttname"><a href="class_element.html#a499c3b52be27d2bf436a13b6f5353b9c">Element::UpdateNodes</a></div><div class="ttdeci">virtual void UpdateNodes()</div><div class="ttdoc">Update the nodes according to the parents. If a parent is removed, use this method. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00347">Element.h:347</a></div></div> <div class="ttc" id="class_power_element_html_a0730506d0417089d69f7ce64b05daed4"><div class="ttname"><a href="class_power_element.html#a0730506d0417089d69f7ce64b05daed4">PowerElement::SetNominalVoltage</a></div><div class="ttdeci">virtual void SetNominalVoltage(std::vector< double > nominalVoltage, std::vector< ElectricalUnit > nominalVoltageUnit)</div><div class="ttdoc">Set nominal voltage of the element. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8cpp_source.html#l00035">PowerElement.cpp:35</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049adeee9ba1a6f37ff0622ca94a52e40551"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049adeee9ba1a6f37ff0622ca94a52e40551">ID_ROTATE_COUNTERCLOCK</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00056">Element.h:56</a></div></div> +<div class="ttc" id="_sync_generator_8h_html"><div class="ttname"><a href="_sync_generator_8h.html">SyncGenerator.h</a></div></div> <div class="ttc" id="_chart_view_8h_html"><div class="ttname"><a href="_chart_view_8h.html">ChartView.h</a></div></div> <div class="ttc" id="class_element_html_a6be881ba60674b289a91e498d3d8fc09"><div class="ttname"><a href="class_element.html#a6be881ba60674b289a91e498d3d8fc09">Element::RemoveChild</a></div><div class="ttdeci">virtual void RemoveChild(Element *child)</div><div class="ttdoc">Remove a child from the list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00354">Element.cpp:354</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="class_text_html_a9923c820cd77b411257ba48beceafeaa"><div class="ttname"><a href="class_text.html#a9923c820cd77b411257ba48beceafeaa">Text::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8cpp_source.html#l00092">Text.cpp:92</a></div></div> <div class="ttc" id="struct_bus_electrical_data_html"><div class="ttname"><a href="struct_bus_electrical_data.html">BusElectricalData</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00024">Bus.h:24</a></div></div> <div class="ttc" id="class_element_html_a038dfd8452fe48ab04bc4e47820c148e"><div class="ttname"><a href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Element::Intersects</a></div><div class="ttdeci">virtual bool Intersects(wxRect2DDouble rect) const =0</div><div class="ttdoc">Check if the element&#39;s rect intersects other rect. </div></div> @@ -120,40 +123,49 @@ $(document).ready(function(){initNavTree('_workspace_8cpp_source.html','');}); <div class="ttc" id="class_camera_html"><div class="ttname"><a href="class_camera.html">Camera</a></div><div class="ttdoc">Class responsible for the correct visualization of the elements on screen. </div><div class="ttdef"><b>Definition:</b> <a href="_camera_8h_source.html#l00030">Camera.h:30</a></div></div> <div class="ttc" id="_power_element_8h_html_a398e3da742a726a8f2bacd8149220cca"><div class="ttname"><a href="_power_element_8h.html#a398e3da742a726a8f2bacd8149220cca">ElectricalUnit</a></div><div class="ttdeci">ElectricalUnit</div><div class="ttdoc">Electrical units. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00028">PowerElement.h:28</a></div></div> <div class="ttc" id="class_element_html_a57f5771fd003020fef3866a1d1dc7487"><div class="ttname"><a href="class_element.html#a57f5771fd003020fef3866a1d1dc7487">Element::CalculateBoundaries</a></div><div class="ttdeci">virtual void CalculateBoundaries(wxPoint2DDouble &leftUp, wxPoint2DDouble &rightBottom) const</div><div class="ttdoc">Calculate the element boundaries. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00263">Element.cpp:263</a></div></div> +<div class="ttc" id="_sync_motor_8h_html"><div class="ttname"><a href="_sync_motor_8h.html">SyncMotor.h</a></div></div> <div class="ttc" id="class_element_html_a569178e9138490a981511a644536c0f9"><div class="ttname"><a href="class_element.html#a569178e9138490a981511a644536c0f9">Element::AddParent</a></div><div class="ttdeci">virtual bool AddParent(Element *parent, wxPoint2DDouble position)</div><div class="ttdoc">Add a parent to the element. This method must be used on power elements that connect to a bus...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00240">Element.h:240</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049af05f38a3b3fea5d6da036dce48e9d960"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049af05f38a3b3fea5d6da036dce48e9d960">ID_LINE_ADD_NODE</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00053">Element.h:53</a></div></div> -<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div><div class="ttdoc">Class to manage color of OpenGL. </div></div> +<div class="ttc" id="_element_8h_html"><div class="ttname"><a href="_element_8h.html">Element.h</a></div></div> <div class="ttc" id="struct_elements_lists_html"><div class="ttname"><a href="struct_elements_lists.html">ElementsLists</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_data_object_8h_source.html#l00024">ElementDataObject.h:24</a></div></div> <div class="ttc" id="class_element_html_ad5f4bee2e241c430a643f46dadf3d3f5"><div class="ttname"><a href="class_element.html#ad5f4bee2e241c430a643f46dadf3d3f5">Element::ReplaceChild</a></div><div class="ttdeci">virtual void ReplaceChild(Element *oldChild, Element *newChild)</div><div class="ttdoc">Replace a child from the list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00362">Element.cpp:362</a></div></div> <div class="ttc" id="class_workspace_base_html"><div class="ttname"><a href="class_workspace_base.html">WorkspaceBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_workspace_base_8h_source.html#l00035">WorkspaceBase.h:35</a></div></div> -<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00062">Bus.h:62</a></div></div> +<div class="ttc" id="class_bus_html"><div class="ttname"><a href="class_bus.html">Bus</a></div><div class="ttdoc">Node for power elements. All others power elements are connected through this. </div><div class="ttdef"><b>Definition:</b> <a href="_bus_8h_source.html#l00069">Bus.h:69</a></div></div> <div class="ttc" id="class_element_html_a551ed1eeab446b5366d56c2ee9dec187"><div class="ttname"><a href="class_element.html#a551ed1eeab446b5366d56c2ee9dec187">Element::Draw</a></div><div class="ttdeci">virtual void Draw(wxPoint2DDouble translation, double scale) const</div><div class="ttdoc">Draw the element. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00302">Element.h:302</a></div></div> <div class="ttc" id="class_power_element_html_acadf6712b430f9fadfbd7015903eaeaf"><div class="ttname"><a href="class_power_element.html#acadf6712b430f9fadfbd7015903eaeaf">PowerElement::GetPlotData</a></div><div class="ttdeci">virtual bool GetPlotData(ElementPlotData &plotData)</div><div class="ttdoc">Fill the plot data. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00198">PowerElement.h:198</a></div></div> <div class="ttc" id="class_element_html_abd94ea2ca7984d9a32d3ffd23837a323"><div class="ttname"><a href="class_element.html#abd94ea2ca7984d9a32d3ffd23837a323">Element::IsPickboxShown</a></div><div class="ttdeci">bool IsPickboxShown() const</div><div class="ttdoc">Checks if the pickbox is shown. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00222">Element.h:222</a></div></div> <div class="ttc" id="class_element_html_a57c84a8e6eb80f0fea6e23cdd439d5aa"><div class="ttname"><a href="class_element.html#a57c84a8e6eb80f0fea6e23cdd439d5aa">Element::IsOnline</a></div><div class="ttdeci">bool IsOnline() const</div><div class="ttdoc">Checks if the element is online or offline. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00227">Element.h:227</a></div></div> -<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00056">ElementPlotData.h:56</a></div></div> +<div class="ttc" id="_line_8h_html"><div class="ttname"><a href="_line_8h.html">Line.h</a></div></div> +<div class="ttc" id="_load_8h_html"><div class="ttname"><a href="_load_8h.html">Load.h</a></div></div> +<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00064">ElementPlotData.h:64</a></div></div> +<div class="ttc" id="_element_data_object_8h_html"><div class="ttname"><a href="_element_data_object_8h.html">ElementDataObject.h</a></div></div> <div class="ttc" id="class_element_html_aa79db7f54ba9754e953b5059a1d79486"><div class="ttname"><a href="class_element.html#aa79db7f54ba9754e953b5059a1d79486">Element::GetTipText</a></div><div class="ttdeci">virtual wxString GetTipText() const</div><div class="ttdoc">Get the tip text. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00296">Element.h:296</a></div></div> -<div class="ttc" id="class_element_data_object_html"><div class="ttname"><a href="class_element_data_object.html">ElementDataObject</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_data_object_8h_source.html#l00029">ElementDataObject.h:29</a></div></div> +<div class="ttc" id="class_element_data_object_html"><div class="ttname"><a href="class_element_data_object.html">ElementDataObject</a></div><div class="ttdoc">Class to store the elements in the clipboard. </div><div class="ttdef"><b>Definition:</b> <a href="_element_data_object_8h_source.html#l00036">ElementDataObject.h:36</a></div></div> <div class="ttc" id="class_element_html_a920fe7ba1563615857618f01e64b3284"><div class="ttname"><a href="class_element.html#a920fe7ba1563615857618f01e64b3284">Element::SetPosition</a></div><div class="ttdeci">void SetPosition(const wxPoint2DDouble position)</div><div class="ttdoc">Set the element position and update the rectangle. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00025">Element.cpp:25</a></div></div> +<div class="ttc" id="_ind_motor_8h_html"><div class="ttname"><a href="_ind_motor_8h.html">IndMotor.h</a></div></div> <div class="ttc" id="class_element_html_afab568cea0a7074bb9984e94bd2ba52e"><div class="ttname"><a href="class_element.html#afab568cea0a7074bb9984e94bd2ba52e">Element::Rotate</a></div><div class="ttdeci">virtual void Rotate(bool clockwise=true)</div><div class="ttdoc">Rotate the element. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00307">Element.h:307</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049a80c989d88bc686137e96564dfad6166a"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a80c989d88bc686137e96564dfad6166a">ID_DELETE</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00057">Element.h:57</a></div></div> -<div class="ttc" id="_fault_8h_html"><div class="ttname"><a href="_fault_8h.html">Fault.h</a></div><div class="ttdoc">Calculate the fault of the system and update the elements data. </div></div> +<div class="ttc" id="_fault_8h_html"><div class="ttname"><a href="_fault_8h.html">Fault.h</a></div></div> <div class="ttc" id="class_element_html_ac38d6707d08cb5c057032aa94b511a62"><div class="ttname"><a href="class_element.html#ac38d6707d08cb5c057032aa94b511a62">Element::AddChild</a></div><div class="ttdeci">virtual void AddChild(Element *child)</div><div class="ttdoc">Add a child to the child list. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00353">Element.cpp:353</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> -<div class="ttc" id="class_electromechanical_html"><div class="ttname"><a href="class_electromechanical.html">Electromechanical</a></div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00051">Electromechanical.h:51</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> +<div class="ttc" id="class_electromechanical_html"><div class="ttname"><a href="class_electromechanical.html">Electromechanical</a></div><div class="ttdoc">Calculates the electromechanical transient based on disturbances (e.g. system fault). </div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00051">Electromechanical.h:51</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> <div class="ttc" id="class_element_html_a2a436b0497017a1c3d03dba5e59f037e"><div class="ttname"><a href="class_element.html#a2a436b0497017a1c3d03dba5e59f037e">Element::GetContextMenu</a></div><div class="ttdeci">virtual bool GetContextMenu(wxMenu &menu)</div><div class="ttdoc">Get the element contex menu. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00313">Element.h:313</a></div></div> <div class="ttc" id="class_chart_view_html"><div class="ttname"><a href="class_chart_view.html">ChartView</a></div><div class="ttdoc">This class is responsible to manage the charts generated in the transient electromechanical studies...</div><div class="ttdef"><b>Definition:</b> <a href="_chart_view_8h_source.html#l00040">ChartView.h:40</a></div></div> <div class="ttc" id="class_element_html_ae1652eded3ccbd241a783691117418b2"><div class="ttname"><a href="class_element.html#ae1652eded3ccbd241a783691117418b2">Element::ShowForm</a></div><div class="ttdeci">virtual bool ShowForm(wxWindow *parent, Element *element)</div><div class="ttdoc">Show element data form. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00534">Element.h:534</a></div></div> <div class="ttc" id="class_element_html_a6f071b6dfd64721ca673bfbe1ca2d525"><div class="ttname"><a href="class_element.html#a6f071b6dfd64721ca673bfbe1ca2d525">Element::MovePickbox</a></div><div class="ttdeci">virtual void MovePickbox(wxPoint2DDouble position)</div><div class="ttdoc">Move the pickbox. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00384">Element.h:384</a></div></div> +<div class="ttc" id="_element_plot_data_8h_html"><div class="ttname"><a href="_element_plot_data_8h.html">ElementPlotData.h</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049a9d58b2fe374676b88029d401da0d77a8"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a9d58b2fe374676b88029d401da0d77a8">ID_ROTATE_CLOCK</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00055">Element.h:55</a></div></div> <div class="ttc" id="_element_8h_html_a0a9284bee7d4ad748c4a740fdeb3f049a1a8f8c62fc201993f6a605ff06314803"><div class="ttname"><a href="_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a1a8f8c62fc201993f6a605ff06314803">ID_LINE_REMOVE_NODE</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00054">Element.h:54</a></div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> +<div class="ttc" id="_text_8h_html"><div class="ttname"><a href="_text_8h.html">Text.h</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> +<div class="ttc" id="_power_flow_8h_html"><div class="ttname"><a href="_power_flow_8h.html">PowerFlow.h</a></div></div> <div class="ttc" id="class_element_html_a245924c5be948397b101787dbea565ea"><div class="ttname"><a href="class_element.html#a245924c5be948397b101787dbea565ea">Element::GetBestPickboxCursor</a></div><div class="ttdeci">virtual wxCursor GetBestPickboxCursor() const</div><div class="ttdoc">Get the best cursor to shown to the user when the mouse is above a pickbox. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00389">Element.h:389</a></div></div> -<div class="ttc" id="class_fault_html"><div class="ttname"><a href="class_fault.html">Fault</a></div><div class="ttdef"><b>Definition:</b> <a href="_fault_8h_source.html#l00030">Fault.h:30</a></div></div> -<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00033">IndMotor.h:33</a></div></div> +<div class="ttc" id="class_fault_html"><div class="ttname"><a href="class_fault.html">Fault</a></div><div class="ttdoc">Calculate the fault of the system and update the elements data. </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8h_source.html#l00030">Fault.h:30</a></div></div> +<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdoc">Induction motor power element. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00040">IndMotor.h:40</a></div></div> <div class="ttc" id="class_element_html_ac42604083db300d20c010b50084de91b"><div class="ttname"><a href="class_element.html#ac42604083db300d20c010b50084de91b">Element::IsSelected</a></div><div class="ttdeci">bool IsSelected() const</div><div class="ttdoc">Checks if the element is selected. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00202">Element.h:202</a></div></div> <div class="ttc" id="class_element_html_af26c67b6dd32eb1b3e417fddf54818c3"><div class="ttname"><a href="class_element.html#af26c67b6dd32eb1b3e417fddf54818c3">Element::RotateNode</a></div><div class="ttdeci">virtual void RotateNode(Element *parent, bool clockwise=true)</div><div class="ttdoc">Rotate a node. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00372">Element.h:372</a></div></div> +<div class="ttc" id="_inductor_8h_html"><div class="ttname"><a href="_inductor_8h.html">Inductor.h</a></div></div> <div class="ttc" id="class_element_html_a9aa2fec8b6c7bef4bf75b9f86fbb76f2"><div class="ttname"><a href="class_element.html#a9aa2fec8b6c7bef4bf75b9f86fbb76f2">Element::SetID</a></div><div class="ttdeci">virtual void SetID(int id)</div><div class="ttdoc">Set the element ID. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00267">Element.h:267</a></div></div> <div class="ttc" id="class_element_html_ac7490a91f3edfff08584567cc84d86b5"><div class="ttname"><a href="class_element.html#ac7490a91f3edfff08584567cc84d86b5">Element::SetNodeParent</a></div><div class="ttdeci">virtual bool SetNodeParent(Element *parent)</div><div class="ttdoc">Set a perent to the node. If all conditions are met, a new parent are added to the element and the po...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00354">Element.h:354</a></div></div> <div class="ttc" id="class_power_element_html_a789105cc7c170330e7daf2a0453fde6d"><div class="ttname"><a href="class_power_element.html#a789105cc7c170330e7daf2a0453fde6d">PowerElement::SwitchesContains</a></div><div class="ttdeci">virtual bool SwitchesContains(wxPoint2DDouble position) const</div><div class="ttdoc">Check if switch contains position. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8cpp_source.html#l00063">PowerElement.cpp:63</a></div></div> @@ -161,14 +173,15 @@ $(document).ready(function(){initNavTree('_workspace_8cpp_source.html','');}); <div class="ttc" id="class_element_html_a20693eda52fae0b42d6fa6a70fd0a0ee"><div class="ttname"><a href="class_element.html#a20693eda52fae0b42d6fa6a70fd0a0ee">Element::GetID</a></div><div class="ttdeci">virtual int GetID() const</div><div class="ttdoc">Get the element ID. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00272">Element.h:272</a></div></div> <div class="ttc" id="class_element_html_a74ec9a279ac0127550e00941206dddb1"><div class="ttname"><a href="class_element.html#a74ec9a279ac0127550e00941206dddb1">Element::ReplaceParent</a></div><div class="ttdeci">virtual void ReplaceParent(Element *oldParent, Element *newParent)</div><div class="ttdoc">Replace a parent. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00346">Element.cpp:346</a></div></div> <div class="ttc" id="class_element_html_a9504437b60faf2c5a27584de8a24810c"><div class="ttname"><a href="class_element.html#a9504437b60faf2c5a27584de8a24810c">Element::RemoveParent</a></div><div class="ttdeci">virtual void RemoveParent(Element *parent)</div><div class="ttdoc">Remove a parent. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00359">Element.h:359</a></div></div> -<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00031">Capacitor.h:31</a></div></div> +<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdoc">Shunt capactior power element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00038">Capacitor.h:38</a></div></div> <div class="ttc" id="class_element_html_abf6c4949733debca55b2f56d8e9b7372"><div class="ttname"><a href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Element::Contains</a></div><div class="ttdeci">virtual bool Contains(wxPoint2DDouble position) const =0</div><div class="ttdoc">Checks if the element contains a position. </div></div> <div class="ttc" id="class_element_html_a846a2a51780a99363b4d4b1812ca16b4"><div class="ttname"><a href="class_element.html#a846a2a51780a99363b4d4b1812ca16b4">Element::StartMove</a></div><div class="ttdeci">virtual void StartMove(wxPoint2DDouble position)</div><div class="ttdoc">Update the element attributes related to the movement. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8cpp_source.html#l00117">Element.cpp:117</a></div></div> -<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> -<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00031">Inductor.h:31</a></div></div> +<div class="ttc" id="class_power_element_html"><div class="ttname"><a href="class_power_element.html">PowerElement</a></div><div class="ttdoc">Abstract class of power elements. </div><div class="ttdef"><b>Definition:</b> <a href="_power_element_8h_source.html#l00117">PowerElement.h:117</a></div></div> +<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdoc">Inductor shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00038">Inductor.h:38</a></div></div> <div class="ttc" id="class_element_html_a8c16c17a6f22ffcdeb80ffa0ed27a72a"><div class="ttname"><a href="class_element.html#a8c16c17a6f22ffcdeb80ffa0ed27a72a">Element::ResetNodes</a></div><div class="ttdeci">virtual void ResetNodes()</div><div class="ttdoc">Remove the active nodes. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00397">Element.h:397</a></div></div> +<div class="ttc" id="_capacitor_8h_html"><div class="ttname"><a href="_capacitor_8h.html">Capacitor.h</a></div></div> <div class="ttc" id="class_element_html_aeabe64a5907e917c8b61afd605ea52c3"><div class="ttname"><a href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">Element::GetCopy</a></div><div class="ttdeci">virtual Element * GetCopy()</div><div class="ttdoc">Get a the element copy. </div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00262">Element.h:262</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/_workspace_8h.html b/docs/doxygen/html/_workspace_8h.html index f80d426..7d16e44 100644 --- a/docs/doxygen/html/_workspace_8h.html +++ b/docs/doxygen/html/_workspace_8h.html @@ -99,7 +99,7 @@ $(document).ready(function(){initNavTree('_workspace_8h.html','');}); <code>#include <wx/clipbrd.h></code><br /> <code>#include <wx/tipwin.h></code><br /> <code>#include "WorkspaceBase.h"</code><br /> -<code>#include "Bus.h"</code><br /> +<code>#include "<a class="el" href="_bus_8h_source.html">Bus.h</a>"</code><br /> <code>#include "<a class="el" href="_control_editor_8h_source.html">ControlEditor.h</a>"</code><br /> </div> <p><a href="_workspace_8h_source.html">Go to the source code of this file.</a></p> diff --git a/docs/doxygen/html/_workspace_8h_source.html b/docs/doxygen/html/_workspace_8h_source.html index 2b1e648..767bdba 100644 --- a/docs/doxygen/html/_workspace_8h_source.html +++ b/docs/doxygen/html/_workspace_8h_source.html @@ -88,27 +88,28 @@ $(document).ready(function(){initNavTree('_workspace_8h_source.html','');}); <div class="title">Workspace.h</div> </div> </div><!--header--> <div class="contents"> -<a href="_workspace_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef WORKSPACE_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define WORKSPACE_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <GL/gl.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <GL/glu.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/dcclient.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <wx/msgdlg.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <wx/statusbr.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <wx/clipbrd.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <wx/tipwin.h></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "WorkspaceBase.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "Bus.h"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="_control_editor_8h.html">ControlEditor.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span><a class="code" href="class_camera.html">Camera</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span><a class="code" href="class_element.html">Element</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// class Bus;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span><a class="code" href="class_line.html">Line</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span><a class="code" href="class_transformer.html">Transformer</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span><a class="code" href="class_sync_generator.html">SyncGenerator</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span><a class="code" href="class_ind_motor.html">IndMotor</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span><a class="code" href="class_sync_motor.html">SyncMotor</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span><a class="code" href="class_load.html">Load</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">class </span><a class="code" href="class_inductor.html">Inductor</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">class </span><a class="code" href="class_capacitor.html">Capacitor</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">class </span><a class="code" href="class_element_data_object.html">ElementDataObject</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">class </span><a class="code" href="class_text.html">Text</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">class </span><a class="code" href="class_power_flow.html">PowerFlow</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">class </span><a class="code" href="class_fault.html">Fault</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">class </span><a class="code" href="class_electromechanical.html">Electromechanical</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">class </span><a class="code" href="class_element_plot_data.html">ElementPlotData</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">class </span><a class="code" href="class_chart_view.html">ChartView</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">enum</span> ElementID {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  ID_BUS = 0,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ID_LINE,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  ID_TRANSFORMER,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  ID_SYNCGENERATOR,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  ID_INDMOTOR,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  ID_SYNCMOTOR,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  ID_LOAD,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  ID_CAPACITOR,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  ID_INDUCTOR,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  ID_TEXT,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  NUM_ELEMENTS</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> };</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="class_workspace.html"> 81</a></span> <span class="keyword">class </span><a class="code" href="class_workspace.html">Workspace</a> : <span class="keyword">public</span> <a class="code" href="class_workspace_base.html">WorkspaceBase</a></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">enum</span> WorkspaceMode {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  MODE_EDIT = 0,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  MODE_MOVE_ELEMENT,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  MODE_MOVE_PICKBOX,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  MODE_MOVE_NODE,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  MODE_DRAG,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  MODE_DRAG_INSERT,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  MODE_DRAG_INSERT_TEXT,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  MODE_INSERT,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  MODE_INSERT_TEXT,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  MODE_SELECTION_RECT,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  MODE_PASTE,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  MODE_DRAG_PASTE</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="class_workspace.html">Workspace</a>();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="class_workspace.html">Workspace</a>(wxWindow* parent, wxString name = wxEmptyString, wxStatusBar* statusBar = NULL);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  ~<a class="code" href="class_workspace.html">Workspace</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  wxString GetName()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_name; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  std::vector<Element*> GetElementList() <span class="keyword">const</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  std::vector<Text*> GetTextList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_textList; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  std::vector<Element*> GetAllElements() <span class="keyword">const</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  WorkspaceMode GetWorkspaceMode()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_mode; }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="class_camera.html">Camera</a>* GetCamera()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_camera; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">void</span> CopySelection();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordtype">bool</span> Paste();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  wxFileName GetSavedPath()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_savedPath; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordtype">void</span> SetName(wxString name) { m_name = name; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">void</span> SetElementList(std::vector<Element*> elementList);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">void</span> SetTextList(std::vector<Text*> textList);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordtype">void</span> SetStatusBarText(wxString text) { m_statusBar->SetStatusText(text); }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">void</span> SetWorkspaceMode(WorkspaceMode mode) { m_mode = mode; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> SetSavedPath(wxFileName savedPath) { m_savedPath = savedPath; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">void</span> SetJustOpened(<span class="keywordtype">bool</span> justOpened) { m_justOpened = justOpened; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordtype">void</span> Redraw() { m_glCanvas->Refresh(); }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">void</span> RotateSelectedElements(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> DeleteSelectedElements();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">bool</span> GetElementsCorners(wxPoint2DDouble& leftUpCorner,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  wxPoint2DDouble& rightDownCorner,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  std::vector<Element*> elementList);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">void</span> Fit();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordtype">void</span> UnselectAll();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordtype">void</span> ValidateBusesVoltages(<a class="code" href="class_element.html">Element</a>* initialBus);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordtype">void</span> ValidateElementsVoltages();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">void</span> UpdateElementsID();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">void</span> UpdateTextElements();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">int</span> GetElementNumber(ElementID elementID) { <span class="keywordflow">return</span> m_elementNumber[elementID]; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">void</span> IncrementElementNumber(ElementID elementID) { m_elementNumber[elementID]++; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>* GetProperties()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_properties; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  std::vector<double> GetStabilityTimeVector()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_stabilityTimeVector; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordtype">bool</span> IsContinuousCalculationActive()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_continuousCalc; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">void</span> SetContinuousCalculationActive(<span class="keywordtype">bool</span> value = <span class="keyword">true</span>) { m_continuousCalc = value; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordtype">bool</span> RunPowerFlow();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">bool</span> RunFault();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">bool</span> RunSCPower();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordtype">bool</span> RunStaticStudies();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">bool</span> RunStability();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMiddleDoubleClick(wxMouseEvent& event);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnIdle(wxIdleEvent& event);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTimer(wxTimerEvent& event);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftDoubleClick(wxMouseEvent& event);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRightClickDown(wxMouseEvent& event);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftClickUp(wxMouseEvent& event);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnScroll(wxMouseEvent& event);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMiddleDown(wxMouseEvent& event);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMiddleUp(wxMouseEvent& event);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMouseMotion(wxMouseEvent& event);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnKeyDown(wxKeyEvent& event);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftClickDown(wxMouseEvent& event);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPaint(wxPaintEvent& event);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPopupClick(wxCommandEvent& event);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordtype">void</span> SetViewport();</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">void</span> UpdateStatusBar();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  wxGLContext* m_glContext = NULL;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  wxStatusBar* m_statusBar = NULL;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="class_camera.html">Camera</a>* m_camera = NULL;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  wxTipWindow* m_tipWindow = NULL;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  wxString m_name;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  WorkspaceMode m_mode = MODE_EDIT;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  std::vector<PowerElement*> m_elementList;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordtype">int</span> m_elementNumber[NUM_ELEMENTS];</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  std::vector<Text*> m_textList;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  wxFileName m_savedPath;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  wxRect2DDouble m_selectionRect;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  wxPoint2DDouble m_startSelRect;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>* m_properties = NULL;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  std::vector<double> m_stabilityTimeVector;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordtype">bool</span> m_continuousCalc = <span class="keyword">false</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordtype">bool</span> m_disconnectedElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordtype">bool</span> m_justOpened = <span class="keyword">false</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> };</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="preprocessor">#endif // WORKSPACE_H</span></div><div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00065">Text.h:65</a></div></div> -<div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00057">PropertiesData.h:57</a></div></div> -<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> -<div class="ttc" id="class_power_flow_html"><div class="ttname"><a href="class_power_flow.html">PowerFlow</a></div><div class="ttdef"><b>Definition:</b> <a href="_power_flow_8h_source.html#l00026">PowerFlow.h:26</a></div></div> -<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00133">SyncGenerator.h:133</a></div></div> +<a href="_workspace_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * Copyright (C) 2017 Thales Lima Oliveira <thales@ufu.br></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * This program is free software; you can redistribute it and/or modify</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * the Free Software Foundation; either version 2 of the License, or</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * any later version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * along with this program. If not, see <https://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> */</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef WORKSPACE_H</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define WORKSPACE_H</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <GL/gl.h></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <GL/glu.h></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <wx/dcclient.h></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <wx/msgdlg.h></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include <wx/statusbr.h></span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <wx/clipbrd.h></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <wx/tipwin.h></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "WorkspaceBase.h"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="_bus_8h.html">Bus.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="_control_editor_8h.html">ControlEditor.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span><a class="code" href="class_camera.html">Camera</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">class </span><a class="code" href="class_element.html">Element</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// class Bus;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">class </span><a class="code" href="class_line.html">Line</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span><a class="code" href="class_transformer.html">Transformer</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span><a class="code" href="class_sync_generator.html">SyncGenerator</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span><a class="code" href="class_ind_motor.html">IndMotor</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">class </span><a class="code" href="class_sync_motor.html">SyncMotor</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span><a class="code" href="class_load.html">Load</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">class </span><a class="code" href="class_inductor.html">Inductor</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keyword">class </span><a class="code" href="class_capacitor.html">Capacitor</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">class </span><a class="code" href="class_element_data_object.html">ElementDataObject</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">class </span><a class="code" href="class_text.html">Text</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keyword">class </span><a class="code" href="class_power_flow.html">PowerFlow</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">class </span><a class="code" href="class_fault.html">Fault</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">class </span><a class="code" href="class_electromechanical.html">Electromechanical</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">class </span><a class="code" href="class_element_plot_data.html">ElementPlotData</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">class </span><a class="code" href="class_chart_view.html">ChartView</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">class </span><a class="code" href="class_properties_data.html">PropertiesData</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">enum</span> ElementID {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  ID_BUS = 0,</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ID_LINE,</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  ID_TRANSFORMER,</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  ID_SYNCGENERATOR,</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  ID_INDMOTOR,</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  ID_SYNCMOTOR,</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  ID_LOAD,</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  ID_CAPACITOR,</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  ID_INDUCTOR,</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  ID_TEXT,</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  NUM_ELEMENTS</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> };</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="class_workspace.html"> 81</a></span> <span class="keyword">class </span><a class="code" href="class_workspace.html">Workspace</a> : <span class="keyword">public</span> <a class="code" href="class_workspace_base.html">WorkspaceBase</a></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">enum</span> WorkspaceMode {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  MODE_EDIT = 0,</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  MODE_MOVE_ELEMENT,</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  MODE_MOVE_PICKBOX,</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  MODE_MOVE_NODE,</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  MODE_DRAG,</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  MODE_DRAG_INSERT,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  MODE_DRAG_INSERT_TEXT,</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  MODE_INSERT,</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  MODE_INSERT_TEXT,</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  MODE_SELECTION_RECT,</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  MODE_PASTE,</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  MODE_DRAG_PASTE</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  };</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="class_workspace.html">Workspace</a>();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="class_workspace.html">Workspace</a>(wxWindow* parent, wxString name = wxEmptyString, wxStatusBar* statusBar = NULL);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  ~<a class="code" href="class_workspace.html">Workspace</a>();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  wxString GetName()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_name; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  std::vector<Element*> GetElementList() <span class="keyword">const</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  std::vector<Text*> GetTextList()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_textList; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  std::vector<Element*> GetAllElements() <span class="keyword">const</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  WorkspaceMode GetWorkspaceMode()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_mode; }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="class_camera.html">Camera</a>* GetCamera()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_camera; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordtype">void</span> CopySelection();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordtype">bool</span> Paste();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  wxFileName GetSavedPath()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_savedPath; }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordtype">void</span> SetName(wxString name) { m_name = name; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordtype">void</span> SetElementList(std::vector<Element*> elementList);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordtype">void</span> SetTextList(std::vector<Text*> textList);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordtype">void</span> SetStatusBarText(wxString text) { m_statusBar->SetStatusText(text); }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordtype">void</span> SetWorkspaceMode(WorkspaceMode mode) { m_mode = mode; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordtype">void</span> SetSavedPath(wxFileName savedPath) { m_savedPath = savedPath; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordtype">void</span> SetJustOpened(<span class="keywordtype">bool</span> justOpened) { m_justOpened = justOpened; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordtype">void</span> Redraw() { m_glCanvas->Refresh(); }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordtype">void</span> RotateSelectedElements(<span class="keywordtype">bool</span> clockwise = <span class="keyword">true</span>);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> DeleteSelectedElements();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">bool</span> GetElementsCorners(wxPoint2DDouble& leftUpCorner,</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  wxPoint2DDouble& rightDownCorner,</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  std::vector<Element*> elementList);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordtype">void</span> Fit();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordtype">void</span> UnselectAll();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordtype">void</span> ValidateBusesVoltages(<a class="code" href="class_element.html">Element</a>* initialBus);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordtype">void</span> ValidateElementsVoltages();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordtype">void</span> UpdateElementsID();</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordtype">void</span> UpdateTextElements();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordtype">int</span> GetElementNumber(ElementID elementID) { <span class="keywordflow">return</span> m_elementNumber[elementID]; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">void</span> IncrementElementNumber(ElementID elementID) { m_elementNumber[elementID]++; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>* GetProperties()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_properties; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  std::vector<double> GetStabilityTimeVector()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_stabilityTimeVector; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordtype">bool</span> IsContinuousCalculationActive()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> m_continuousCalc; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordtype">void</span> SetContinuousCalculationActive(<span class="keywordtype">bool</span> value = <span class="keyword">true</span>) { m_continuousCalc = value; }</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordtype">bool</span> RunPowerFlow();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">bool</span> RunFault();</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordtype">bool</span> RunSCPower();</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordtype">bool</span> RunStaticStudies();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordtype">bool</span> RunStability();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">protected</span>:</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMiddleDoubleClick(wxMouseEvent& event);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnIdle(wxIdleEvent& event);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnTimer(wxTimerEvent& event);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftDoubleClick(wxMouseEvent& event);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnRightClickDown(wxMouseEvent& event);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftClickUp(wxMouseEvent& event);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnScroll(wxMouseEvent& event);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMiddleDown(wxMouseEvent& event);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMiddleUp(wxMouseEvent& event);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnMouseMotion(wxMouseEvent& event);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnKeyDown(wxKeyEvent& event);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnLeftClickDown(wxMouseEvent& event);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPaint(wxPaintEvent& event);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> OnPopupClick(wxCommandEvent& event);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordtype">void</span> SetViewport();</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">void</span> UpdateStatusBar();</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  wxGLContext* m_glContext = NULL;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  wxStatusBar* m_statusBar = NULL;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="class_camera.html">Camera</a>* m_camera = NULL;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  wxTipWindow* m_tipWindow = NULL;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  wxString m_name;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  WorkspaceMode m_mode = MODE_EDIT;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  std::vector<PowerElement*> m_elementList;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordtype">int</span> m_elementNumber[NUM_ELEMENTS];</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  std::vector<Text*> m_textList;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  wxFileName m_savedPath;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  wxRect2DDouble m_selectionRect;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  wxPoint2DDouble m_startSelRect;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>* m_properties = NULL;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  std::vector<double> m_stabilityTimeVector;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordtype">bool</span> m_continuousCalc = <span class="keyword">false</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordtype">bool</span> m_disconnectedElement = <span class="keyword">false</span>;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordtype">bool</span> m_justOpened = <span class="keyword">false</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> };</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="preprocessor">#endif // WORKSPACE_H</span></div><div class="ttc" id="class_text_html"><div class="ttname"><a href="class_text.html">Text</a></div><div class="ttdoc">Element that shows power element informations in workspace. </div><div class="ttdef"><b>Definition:</b> <a href="_text_8h_source.html#l00072">Text.h:72</a></div></div> +<div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdoc">General and simulation data manager. </div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00064">PropertiesData.h:64</a></div></div> +<div class="ttc" id="class_element_html"><div class="ttname"><a href="class_element.html">Element</a></div><div class="ttdoc">Base class of all elements of the program. This class is responsible for manage graphical and his dat...</div><div class="ttdef"><b>Definition:</b> <a href="_element_8h_source.html#l00113">Element.h:113</a></div></div> +<div class="ttc" id="class_power_flow_html"><div class="ttname"><a href="class_power_flow.html">PowerFlow</a></div><div class="ttdoc">Calculate the power flow. </div><div class="ttdef"><b>Definition:</b> <a href="_power_flow_8h_source.html#l00033">PowerFlow.h:33</a></div></div> +<div class="ttc" id="class_sync_generator_html"><div class="ttname"><a href="class_sync_generator.html">SyncGenerator</a></div><div class="ttdoc">Synchronous generator power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_generator_8h_source.html#l00140">SyncGenerator.h:140</a></div></div> <div class="ttc" id="class_camera_html"><div class="ttname"><a href="class_camera.html">Camera</a></div><div class="ttdoc">Class responsible for the correct visualization of the elements on screen. </div><div class="ttdef"><b>Definition:</b> <a href="_camera_8h_source.html#l00030">Camera.h:30</a></div></div> <div class="ttc" id="_control_editor_8h_html"><div class="ttname"><a href="_control_editor_8h.html">ControlEditor.h</a></div></div> +<div class="ttc" id="_bus_8h_html"><div class="ttname"><a href="_bus_8h.html">Bus.h</a></div></div> <div class="ttc" id="class_workspace_base_html"><div class="ttname"><a href="class_workspace_base.html">WorkspaceBase</a></div><div class="ttdef"><b>Definition:</b> <a href="_workspace_base_8h_source.html#l00035">WorkspaceBase.h:35</a></div></div> -<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00056">ElementPlotData.h:56</a></div></div> -<div class="ttc" id="class_element_data_object_html"><div class="ttname"><a href="class_element_data_object.html">ElementDataObject</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_data_object_8h_source.html#l00029">ElementDataObject.h:29</a></div></div> -<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00052">Line.h:52</a></div></div> -<div class="ttc" id="class_electromechanical_html"><div class="ttname"><a href="class_electromechanical.html">Electromechanical</a></div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00051">Electromechanical.h:51</a></div></div> -<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00035">Load.h:35</a></div></div> +<div class="ttc" id="class_element_plot_data_html"><div class="ttname"><a href="class_element_plot_data.html">ElementPlotData</a></div><div class="ttdef"><b>Definition:</b> <a href="_element_plot_data_8h_source.html#l00064">ElementPlotData.h:64</a></div></div> +<div class="ttc" id="class_element_data_object_html"><div class="ttname"><a href="class_element_data_object.html">ElementDataObject</a></div><div class="ttdoc">Class to store the elements in the clipboard. </div><div class="ttdef"><b>Definition:</b> <a href="_element_data_object_8h_source.html#l00036">ElementDataObject.h:36</a></div></div> +<div class="ttc" id="class_line_html"><div class="ttname"><a href="class_line.html">Line</a></div><div class="ttdoc">Power line element. </div><div class="ttdef"><b>Definition:</b> <a href="_line_8h_source.html#l00059">Line.h:59</a></div></div> +<div class="ttc" id="class_electromechanical_html"><div class="ttname"><a href="class_electromechanical.html">Electromechanical</a></div><div class="ttdoc">Calculates the electromechanical transient based on disturbances (e.g. system fault). </div><div class="ttdef"><b>Definition:</b> <a href="_electromechanical_8h_source.html#l00051">Electromechanical.h:51</a></div></div> +<div class="ttc" id="class_load_html"><div class="ttname"><a href="class_load.html">Load</a></div><div class="ttdoc">Loas shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_load_8h_source.html#l00042">Load.h:42</a></div></div> <div class="ttc" id="class_chart_view_html"><div class="ttname"><a href="class_chart_view.html">ChartView</a></div><div class="ttdoc">This class is responsible to manage the charts generated in the transient electromechanical studies...</div><div class="ttdef"><b>Definition:</b> <a href="_chart_view_8h_source.html#l00040">ChartView.h:40</a></div></div> -<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00127">SyncMotor.h:127</a></div></div> -<div class="ttc" id="class_fault_html"><div class="ttname"><a href="class_fault.html">Fault</a></div><div class="ttdef"><b>Definition:</b> <a href="_fault_8h_source.html#l00030">Fault.h:30</a></div></div> -<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00033">IndMotor.h:33</a></div></div> -<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00031">Capacitor.h:31</a></div></div> -<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00031">Inductor.h:31</a></div></div> +<div class="ttc" id="class_sync_motor_html"><div class="ttname"><a href="class_sync_motor.html">SyncMotor</a></div><div class="ttdoc">Synchronous motor (synchronous compensator) power element. </div><div class="ttdef"><b>Definition:</b> <a href="_sync_motor_8h_source.html#l00134">SyncMotor.h:134</a></div></div> +<div class="ttc" id="class_fault_html"><div class="ttname"><a href="class_fault.html">Fault</a></div><div class="ttdoc">Calculate the fault of the system and update the elements data. </div><div class="ttdef"><b>Definition:</b> <a href="_fault_8h_source.html#l00030">Fault.h:30</a></div></div> +<div class="ttc" id="class_ind_motor_html"><div class="ttname"><a href="class_ind_motor.html">IndMotor</a></div><div class="ttdoc">Induction motor power element. </div><div class="ttdef"><b>Definition:</b> <a href="_ind_motor_8h_source.html#l00040">IndMotor.h:40</a></div></div> +<div class="ttc" id="class_capacitor_html"><div class="ttname"><a href="class_capacitor.html">Capacitor</a></div><div class="ttdoc">Shunt capactior power element. </div><div class="ttdef"><b>Definition:</b> <a href="_capacitor_8h_source.html#l00038">Capacitor.h:38</a></div></div> +<div class="ttc" id="class_inductor_html"><div class="ttname"><a href="class_inductor.html">Inductor</a></div><div class="ttdoc">Inductor shunt power element. </div><div class="ttdef"><b>Definition:</b> <a href="_inductor_8h_source.html#l00038">Inductor.h:38</a></div></div> <div class="ttc" id="class_workspace_html"><div class="ttname"><a href="class_workspace.html">Workspace</a></div><div class="ttdoc">This class manages the graphical and power elements. It is responsible for handling the user&#39;s intera...</div><div class="ttdef"><b>Definition:</b> <a href="_workspace_8h_source.html#l00081">Workspace.h:81</a></div></div> -<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00071">Transformer.h:71</a></div></div> +<div class="ttc" id="class_transformer_html"><div class="ttname"><a href="class_transformer.html">Transformer</a></div><div class="ttdoc">Two-winding transformer power element. </div><div class="ttdef"><b>Definition:</b> <a href="_transformer_8h_source.html#l00078">Transformer.h:78</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> diff --git a/docs/doxygen/html/annotated.html b/docs/doxygen/html/annotated.html index 6455b40..3949517 100644 --- a/docs/doxygen/html/annotated.html +++ b/docs/doxygen/html/annotated.html @@ -92,13 +92,13 @@ $(document).ready(function(){initNavTree('annotated.html','');}); <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory"> <tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_about_form.html" target="_self">AboutForm</a></td><td class="desc">Form to show some informations </td></tr> <tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_about_form_base.html" target="_self">AboutFormBase</a></td><td class="desc"></td></tr> -<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_branch.html" target="_self">Branch</a></td><td class="desc"></td></tr> -<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_bus.html" target="_self">Bus</a></td><td class="desc"></td></tr> +<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_branch.html" target="_self">Branch</a></td><td class="desc">Abstract class for branch power elements </td></tr> +<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_bus.html" target="_self">Bus</a></td><td class="desc"><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> for power elements. All others power elements are connected through this </td></tr> <tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_bus_electrical_data.html" target="_self">BusElectricalData</a></td><td class="desc"></td></tr> <tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_bus_form.html" target="_self">BusForm</a></td><td class="desc">Form to edit the bus power data </td></tr> <tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_bus_form_base.html" target="_self">BusFormBase</a></td><td class="desc"></td></tr> <tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_camera.html" target="_self">Camera</a></td><td class="desc">Class responsible for the correct visualization of the elements on screen </td></tr> -<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_capacitor.html" target="_self">Capacitor</a></td><td class="desc"></td></tr> +<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_capacitor.html" target="_self">Capacitor</a></td><td class="desc"><a class="el" href="class_shunt.html" title="Abstract class for shunt power elements. ">Shunt</a> capactior power element </td></tr> <tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_capacitor_electrical_data.html" target="_self">CapacitorElectricalData</a></td><td class="desc"></td></tr> <tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_chart_view.html" target="_self">ChartView</a></td><td class="desc">This class is responsible to manage the charts generated in the transient electromechanical studies </td></tr> <tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_chart_view_base.html" target="_self">ChartViewBase</a></td><td class="desc"></td></tr> @@ -116,18 +116,18 @@ $(document).ready(function(){initNavTree('annotated.html','');}); <tr id="row_23_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_control_system_test_base.html" target="_self">ControlSystemTestBase</a></td><td class="desc"></td></tr> <tr id="row_24_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_data_report.html" target="_self">DataReport</a></td><td class="desc">Form that shows the results of power flow and fault calculations </td></tr> <tr id="row_25_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_data_report_base.html" target="_self">DataReportBase</a></td><td class="desc"></td></tr> -<tr id="row_26_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_electric_calculation.html" target="_self">ElectricCalculation</a></td><td class="desc"></td></tr> -<tr id="row_27_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_electromechanical.html" target="_self">Electromechanical</a></td><td class="desc"></td></tr> -<tr id="row_28_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_element.html" target="_self">Element</a></td><td class="desc"></td></tr> -<tr id="row_29_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_element_data_object.html" target="_self">ElementDataObject</a></td><td class="desc"></td></tr> +<tr id="row_26_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_electric_calculation.html" target="_self">ElectricCalculation</a></td><td class="desc">Base class of electric calculations, with general methods </td></tr> +<tr id="row_27_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_electromechanical.html" target="_self">Electromechanical</a></td><td class="desc">Calculates the electromechanical transient based on disturbances (e.g. system fault) </td></tr> +<tr id="row_28_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_element.html" target="_self">Element</a></td><td class="desc">Base class of all elements of the program. This class is responsible for manage graphical and his data </td></tr> +<tr id="row_29_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_element_data_object.html" target="_self">ElementDataObject</a></td><td class="desc">Class to store the elements in the clipboard </td></tr> <tr id="row_30_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_element_plot_data.html" target="_self">ElementPlotData</a></td><td class="desc"></td></tr> <tr id="row_31_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_elements_lists.html" target="_self">ElementsLists</a></td><td class="desc"></td></tr> -<tr id="row_32_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_exponential.html" target="_self">Exponential</a></td><td class="desc">Generates an output following an exponential function. \( output = A\cdot e^{B\cdot input} \) </td></tr> +<tr id="row_32_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_exponential.html" target="_self">Exponential</a></td><td class="desc">Generates an output following an exponential function </td></tr> <tr id="row_33_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_exponential_form.html" target="_self">ExponentialForm</a></td><td class="desc">Form to edit the exponential control data </td></tr> <tr id="row_34_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_exponential_form_base.html" target="_self">ExponentialFormBase</a></td><td class="desc"></td></tr> -<tr id="row_35_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_fault.html" target="_self">Fault</a></td><td class="desc"></td></tr> +<tr id="row_35_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_fault.html" target="_self">Fault</a></td><td class="desc">Calculate the fault of the system and update the elements data </td></tr> <tr id="row_36_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_file_handing.html" target="_self">FileHanding</a></td><td class="desc">Save and opens the projects created on disk </td></tr> -<tr id="row_37_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_gain.html" target="_self">Gain</a></td><td class="desc">Provide an output multiplying the input by a constant. \( output = K \cdot input \) </td></tr> +<tr id="row_37_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_gain.html" target="_self">Gain</a></td><td class="desc">Provide an output multiplying the input by a constant </td></tr> <tr id="row_38_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_gain_form.html" target="_self">GainForm</a></td><td class="desc">Form to edit the gain control data </td></tr> <tr id="row_39_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_gain_form_base.html" target="_self">GainFormBase</a></td><td class="desc"></td></tr> <tr id="row_40_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_general_data.html" target="_self">GeneralData</a></td><td class="desc"></td></tr> @@ -135,39 +135,39 @@ $(document).ready(function(){initNavTree('annotated.html','');}); <tr id="row_42_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_general_properties_form_base.html" target="_self">GeneralPropertiesFormBase</a></td><td class="desc"></td></tr> <tr id="row_43_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_generator_stab_form.html" target="_self">GeneratorStabForm</a></td><td class="desc">Form to edit the synchronous generator data for electromechanical studies </td></tr> <tr id="row_44_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_generator_stab_form_base.html" target="_self">GeneratorStabFormBase</a></td><td class="desc"></td></tr> -<tr id="row_45_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_graphical_element.html" target="_self">GraphicalElement</a></td><td class="desc"></td></tr> -<tr id="row_46_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_ind_motor.html" target="_self">IndMotor</a></td><td class="desc"></td></tr> +<tr id="row_45_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_graphical_element.html" target="_self">GraphicalElement</a></td><td class="desc">Abstract class for graphical elements shown with power elements in workspace </td></tr> +<tr id="row_46_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_ind_motor.html" target="_self">IndMotor</a></td><td class="desc">Induction motor power element </td></tr> <tr id="row_47_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_ind_motor_electrical_data.html" target="_self">IndMotorElectricalData</a></td><td class="desc"></td></tr> <tr id="row_48_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_ind_motor_form.html" target="_self">IndMotorForm</a></td><td class="desc">Form to edit the induction motor power data </td></tr> <tr id="row_49_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_ind_motor_form_base.html" target="_self">IndMotorFormBase</a></td><td class="desc"></td></tr> -<tr id="row_50_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_inductor.html" target="_self">Inductor</a></td><td class="desc"></td></tr> +<tr id="row_50_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_inductor.html" target="_self">Inductor</a></td><td class="desc"><a class="el" href="class_inductor.html" title="Inductor shunt power element. ">Inductor</a> shunt power element </td></tr> <tr id="row_51_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_inductor_electrical_data.html" target="_self">InductorElectricalData</a></td><td class="desc"></td></tr> -<tr id="row_52_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_integration_constant.html" target="_self">IntegrationConstant</a></td><td class="desc"></td></tr> +<tr id="row_52_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_integration_constant.html" target="_self">IntegrationConstant</a></td><td class="desc">Integration constants to calculate dynamic elements through trapezoidal integration method </td></tr> <tr id="row_53_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_i_o_control.html" target="_self">IOControl</a></td><td class="desc">Provides the communication with the power element </td></tr> <tr id="row_54_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_i_o_control_form.html" target="_self">IOControlForm</a></td><td class="desc">Form to edit the input/output control data </td></tr> <tr id="row_55_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_i_o_control_form_base.html" target="_self">IOControlFormBase</a></td><td class="desc"></td></tr> <tr id="row_56_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_limiter.html" target="_self">Limiter</a></td><td class="desc">Limits the input value by superior and inferior values </td></tr> <tr id="row_57_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_limiter_form.html" target="_self">LimiterForm</a></td><td class="desc">Form to edit the limit control data </td></tr> <tr id="row_58_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_limiter_form_base.html" target="_self">LimiterFormBase</a></td><td class="desc"></td></tr> -<tr id="row_59_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_line.html" target="_self">Line</a></td><td class="desc"></td></tr> +<tr id="row_59_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_line.html" target="_self">Line</a></td><td class="desc">Power line element </td></tr> <tr id="row_60_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_line_electrical_data.html" target="_self">LineElectricalData</a></td><td class="desc"></td></tr> <tr id="row_61_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_line_form.html" target="_self">LineForm</a></td><td class="desc">Form to edit the line power data </td></tr> <tr id="row_62_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_line_form_base.html" target="_self">LineFormBase</a></td><td class="desc"></td></tr> -<tr id="row_63_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_load.html" target="_self">Load</a></td><td class="desc"></td></tr> +<tr id="row_63_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_load.html" target="_self">Load</a></td><td class="desc">Loas shunt power element </td></tr> <tr id="row_64_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_load_electrical_data.html" target="_self">LoadElectricalData</a></td><td class="desc"></td></tr> <tr id="row_65_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_load_form.html" target="_self">LoadForm</a></td><td class="desc">Form to edit the load power data </td></tr> <tr id="row_66_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_load_form_base.html" target="_self">LoadFormBase</a></td><td class="desc"></td></tr> -<tr id="row_67_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_machines.html" target="_self">Machines</a></td><td class="desc"></td></tr> +<tr id="row_67_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_machines.html" target="_self">Machines</a></td><td class="desc">Abstract class for rotary machines power elements </td></tr> <tr id="row_68_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_main_app.html" target="_self">MainApp</a></td><td class="desc"></td></tr> <tr id="row_69_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_main_frame.html" target="_self">MainFrame</a></td><td class="desc">Main frame of the program. This class manage the ribbon menu and the notebook behavior </td></tr> <tr id="row_70_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_main_frame_base.html" target="_self">MainFrameBase</a></td><td class="desc"></td></tr> <tr id="row_71_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_multiplier.html" target="_self">Multiplier</a></td><td class="desc">Multiplies two inputs </td></tr> <tr id="row_72_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_node.html" target="_self">Node</a></td><td class="desc"><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> of a control element. This class manages the user interaction with the connection and control elements </td></tr> -<tr id="row_73_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_open_g_l_colour.html" target="_self">OpenGLColour</a></td><td class="desc"></td></tr> -<tr id="row_74_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_plot_data.html" target="_self">PlotData</a></td><td class="desc"></td></tr> -<tr id="row_75_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_power_element.html" target="_self">PowerElement</a></td><td class="desc"></td></tr> -<tr id="row_76_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_power_flow.html" target="_self">PowerFlow</a></td><td class="desc"></td></tr> -<tr id="row_77_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_properties_data.html" target="_self">PropertiesData</a></td><td class="desc"></td></tr> +<tr id="row_73_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_open_g_l_colour.html" target="_self">OpenGLColour</a></td><td class="desc">Class to manage color of OpenGL </td></tr> +<tr id="row_74_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_plot_data.html" target="_self">PlotData</a></td><td class="desc">This class is responsible to manage the graphical data of electromechanical result to be plotted on chart viewer </td></tr> +<tr id="row_75_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_power_element.html" target="_self">PowerElement</a></td><td class="desc">Abstract class of power elements </td></tr> +<tr id="row_76_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_power_flow.html" target="_self">PowerFlow</a></td><td class="desc">Calculate the power flow </td></tr> +<tr id="row_77_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_properties_data.html" target="_self">PropertiesData</a></td><td class="desc">General and simulation data manager </td></tr> <tr id="row_78_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_rate_limiter.html" target="_self">RateLimiter</a></td><td class="desc">Limits the rising and/or falling rate.<br /> </td></tr> <tr id="row_79_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_rate_limiter_form.html" target="_self">RateLimiterForm</a></td><td class="desc">Form to edit the rate limit control data </td></tr> @@ -175,33 +175,33 @@ $(document).ready(function(){initNavTree('annotated.html','');}); <tr id="row_81_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_reactive_limits.html" target="_self">ReactiveLimits</a></td><td class="desc"></td></tr> <tr id="row_82_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_reactive_shunt_element_form.html" target="_self">ReactiveShuntElementForm</a></td><td class="desc">Form to edit the reactive shunt element power data </td></tr> <tr id="row_83_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_reactive_shunt_element_form_base.html" target="_self">ReactiveShuntElementFormBase</a></td><td class="desc"></td></tr> -<tr id="row_84_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_shunt.html" target="_self">Shunt</a></td><td class="desc"></td></tr> +<tr id="row_84_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_shunt.html" target="_self">Shunt</a></td><td class="desc">Abstract class for shunt power elements </td></tr> <tr id="row_85_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_simulation_data.html" target="_self">SimulationData</a></td><td class="desc"></td></tr> <tr id="row_86_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_simulations_settings_form.html" target="_self">SimulationsSettingsForm</a></td><td class="desc">Form to edit the simulation data </td></tr> <tr id="row_87_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_simulations_settings_form_base.html" target="_self">SimulationsSettingsFormBase</a></td><td class="desc"></td></tr> -<tr id="row_88_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sum.html" target="_self">Sum</a></td><td class="desc"></td></tr> +<tr id="row_88_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sum.html" target="_self">Sum</a></td><td class="desc"><a class="el" href="class_sum.html" title="Sum the all inputs (can choose the input signal). ">Sum</a> the all inputs (can choose the input signal) </td></tr> <tr id="row_89_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sum_form.html" target="_self">SumForm</a></td><td class="desc">Form to edit the sum control data </td></tr> <tr id="row_90_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sum_form_base.html" target="_self">SumFormBase</a></td><td class="desc"></td></tr> -<tr id="row_91_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_switching_data.html" target="_self">SwitchingData</a></td><td class="desc"></td></tr> +<tr id="row_91_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_switching_data.html" target="_self">SwitchingData</a></td><td class="desc">Switching data of power elements </td></tr> <tr id="row_92_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_switching_form.html" target="_self">SwitchingForm</a></td><td class="desc">Form to edit the switching data of power elements for electromechanical transient studies </td></tr> <tr id="row_93_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_switching_form_base.html" target="_self">SwitchingFormBase</a></td><td class="desc"></td></tr> -<tr id="row_94_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sync_generator.html" target="_self">SyncGenerator</a></td><td class="desc"></td></tr> +<tr id="row_94_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sync_generator.html" target="_self">SyncGenerator</a></td><td class="desc">Synchronous generator power element </td></tr> <tr id="row_95_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_sync_generator_electrical_data.html" target="_self">SyncGeneratorElectricalData</a></td><td class="desc"></td></tr> <tr id="row_96_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sync_machine_form.html" target="_self">SyncMachineForm</a></td><td class="desc">Form to edit the synchronous machine power data </td></tr> <tr id="row_97_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sync_machine_form_base.html" target="_self">SyncMachineFormBase</a></td><td class="desc"></td></tr> <tr id="row_98_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_sync_machine_model_data.html" target="_self">SyncMachineModelData</a></td><td class="desc">Synchronous machine data for different models </td></tr> -<tr id="row_99_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sync_motor.html" target="_self">SyncMotor</a></td><td class="desc"></td></tr> +<tr id="row_99_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sync_motor.html" target="_self">SyncMotor</a></td><td class="desc">Synchronous motor (synchronous compensator) power element </td></tr> <tr id="row_100_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_sync_motor_electrical_data.html" target="_self">SyncMotorElectricalData</a></td><td class="desc"></td></tr> -<tr id="row_101_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_text.html" target="_self">Text</a></td><td class="desc"></td></tr> +<tr id="row_101_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_text.html" target="_self">Text</a></td><td class="desc"><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that shows power element informations in workspace </td></tr> <tr id="row_102_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_text_form.html" target="_self">TextForm</a></td><td class="desc">Form to edit the text graphical data </td></tr> <tr id="row_103_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_text_form_base.html" target="_self">TextFormBase</a></td><td class="desc"></td></tr> <tr id="row_104_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_text_g_l_drawable.html" target="_self">TextGLDrawable</a></td><td class="desc"></td></tr> <tr id="row_105_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_text_texture.html" target="_self">TextTexture</a></td><td class="desc"></td></tr> -<tr id="row_106_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_106_" class="arrow" onclick="toggleFolder('106_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_transfer_function.html" target="_self">TransferFunction</a></td><td class="desc"></td></tr> +<tr id="row_106_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_106_" class="arrow" onclick="toggleFolder('106_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_transfer_function.html" target="_self">TransferFunction</a></td><td class="desc">Calculates the time response by a frequency domain transfer function </td></tr> <tr id="row_106_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_transfer_function_1_1_space_state.html" target="_self">SpaceState</a></td><td class="desc"></td></tr> <tr id="row_107_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_transfer_function_form.html" target="_self">TransferFunctionForm</a></td><td class="desc">Form to edit the transfer function control data </td></tr> <tr id="row_108_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_transfer_function_form_base.html" target="_self">TransferFunctionFormBase</a></td><td class="desc"></td></tr> -<tr id="row_109_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_transformer.html" target="_self">Transformer</a></td><td class="desc"></td></tr> +<tr id="row_109_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_transformer.html" target="_self">Transformer</a></td><td class="desc">Two-winding transformer power element </td></tr> <tr id="row_110_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_transformer_electrical_data.html" target="_self">TransformerElectricalData</a></td><td class="desc"></td></tr> <tr id="row_111_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_transformer_form.html" target="_self">TransformerForm</a></td><td class="desc">Form to edit the transformer power data </td></tr> <tr id="row_112_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_transformer_form_base.html" target="_self">TransformerFormBase</a></td><td class="desc"></td></tr> diff --git a/docs/doxygen/html/class_branch.html b/docs/doxygen/html/class_branch.html index 7fe4ac0..e69acbd 100644 --- a/docs/doxygen/html/class_branch.html +++ b/docs/doxygen/html/class_branch.html @@ -92,16 +92,21 @@ $(document).ready(function(){initNavTree('class_branch.html','');}); <div class="title">Branch Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Abstract class for branch power elements. + <a href="class_branch.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_branch_8h_source.html">Branch.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Branch:</div> <div class="dyncontent"> <div class="center"> <img src="class_branch.png" usemap="#Branch_map" alt=""/> <map id="Branch_map" name="Branch_map"> -<area href="class_power_element.html" alt="PowerElement" shape="rect" coords="51,56,143,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="51,0,143,24"/> -<area href="class_line.html" alt="Line" shape="rect" coords="0,168,92,192"/> -<area href="class_transformer.html" alt="Transformer" shape="rect" coords="102,168,194,192"/> +<area href="class_power_element.html" title="Abstract class of power elements. " alt="PowerElement" shape="rect" coords="51,56,143,80"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="51,0,143,24"/> +<area href="class_line.html" title="Power line element. " alt="Line" shape="rect" coords="0,168,92,192"/> +<area href="class_transformer.html" title="Two-winding transformer power element. " alt="Transformer" shape="rect" coords="102,168,194,192"/> </map> </div></div> <table class="memberdecls"> @@ -508,8 +513,11 @@ Additional Inherited Members</h2></td></tr> <tr class="separator:abb2e253ec1e86353cd7160209c96553c inherit pub_static_methods_class_element"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00024">24</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> +<div class="textblock"><p>Abstract class for branch power elements. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00031">31</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a8d6d80c50f849c5be2bccffd5b524e21"></a> <h2 class="memtitle"><span class="permalink"><a href="#a8d6d80c50f849c5be2bccffd5b524e21">◆ </a></span>AddPoint()</h2> @@ -547,7 +555,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_line.html#a046a7b2ebff50f237f73dbc182f7ff6f">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00044">44</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00051">51</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -587,7 +595,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_transformer.html#a327ff3cf9194c18049e4feac6761ebc0">Transformer</a>, and <a class="el" href="class_line.html#a05eb3761f198a058045f85d6e685ca97">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00030">30</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00037">37</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -638,7 +646,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_transformer.html#a1e9e9ba48aa76bdd2ff2e973014ad422">Transformer</a>, and <a class="el" href="class_line.html#a297e12aa8ff0be5d344e245732487bdd">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00031">31</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00038">38</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -672,7 +680,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_line.html#a7c72fc585eb96bf9565cca0ce300cfd9">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00039">39</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00046">46</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -713,7 +721,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_transformer.html#adfe51a2198cfc10e1095af9c034681bd">Transformer</a>, and <a class="el" href="class_line.html#a978de0ff06b6f57401ade84045e1a55f">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00045">45</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00052">52</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -753,7 +761,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_transformer.html#a39b58fcf230970601c5d77c088559731">Transformer</a>, and <a class="el" href="class_line.html#a125581fc6d21c83565b902751af331dc">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00040">40</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00047">47</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -793,7 +801,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8">Transformer</a>, and <a class="el" href="class_line.html#a3eabf6de2af4ee71f72ce4f091c69978">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00032">32</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00039">39</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -844,7 +852,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_transformer.html#a9652232a076cca0fe3753477ec88f63a">Transformer</a>, and <a class="el" href="class_line.html#ac8be7d7136d86830c262280f51b79ea4">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00034">34</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00041">41</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -884,7 +892,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_line.html#afa67498961416e645e0aa5358959ef1d">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00041">41</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00048">48</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -964,7 +972,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_line.html#acac760d9d67d9c4d007e03592d0e96b4">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00042">42</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00049">49</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> @@ -1134,7 +1142,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5">Transformer</a>, and <a class="el" href="class_line.html#abb812387508a9971570bfa1d38e41041">Line</a>.</p> -<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00033">33</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_branch_8h_source.html#l00040">40</a> of file <a class="el" href="_branch_8h_source.html">Branch.h</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_bus.html b/docs/doxygen/html/class_bus.html index 0c3edc9..c613d83 100644 --- a/docs/doxygen/html/class_bus.html +++ b/docs/doxygen/html/class_bus.html @@ -92,14 +92,19 @@ $(document).ready(function(){initNavTree('class_bus.html','');}); <div class="title">Bus Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> for power elements. All others power elements are connected through this. + <a href="class_bus.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_bus_8h_source.html">Bus.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Bus:</div> <div class="dyncontent"> <div class="center"> <img src="class_bus.png" usemap="#Bus_map" alt=""/> <map id="Bus_map" name="Bus_map"> -<area href="class_power_element.html" alt="PowerElement" shape="rect" coords="0,56,92,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,92,24"/> +<area href="class_power_element.html" title="Abstract class of power elements. " alt="PowerElement" shape="rect" coords="0,56,92,80"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,92,24"/> </map> </div></div> <table class="memberdecls"> @@ -515,8 +520,11 @@ Additional Inherited Members</h2></td></tr> <tr class="separator:abb2e253ec1e86353cd7160209c96553c inherit pub_static_methods_class_element"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_bus_8h_source.html#l00062">62</a> of file <a class="el" href="_bus_8h_source.html">Bus.h</a>.</p> +<div class="textblock"><p><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> for power elements. All others power elements are connected through this. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_bus_8h_source.html#l00069">69</a> of file <a class="el" href="_bus_8h_source.html">Bus.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="ab046baebe4bfe0a52905148d78f44681"></a> <h2 class="memtitle"><span class="permalink"><a href="#ab046baebe4bfe0a52905148d78f44681">◆ </a></span>AddParent()</h2> @@ -555,7 +563,7 @@ Additional Inherited Members</h2></td></tr> <p>Add a parent to the element. This method must be used on power elements that connect to a bus, so the parent must be a bus. The element basic points are calculated in this method, so apply this when the element is being inserted. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html">Element</a> parent. </td></tr> + <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> parent. </td></tr> <tr><td class="paramname">position</td><td><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> position in the parent. </td></tr> </table> </dd> @@ -563,7 +571,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a569178e9138490a981511a644536c0f9">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_bus_8h_source.html#l00070">70</a> of file <a class="el" href="_bus_8h_source.html">Bus.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_bus_8h_source.html#l00077">77</a> of file <a class="el" href="_bus_8h_source.html">Bus.h</a>.</p> </div> </div> @@ -1019,7 +1027,7 @@ Additional Inherited Members</h2></td></tr> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/class_capacitor.html b/docs/doxygen/html/class_capacitor.html index 12e844a..3ebe8fc 100644 --- a/docs/doxygen/html/class_capacitor.html +++ b/docs/doxygen/html/class_capacitor.html @@ -92,15 +92,20 @@ $(document).ready(function(){initNavTree('class_capacitor.html','');}); <div class="title">Capacitor Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p><a class="el" href="class_shunt.html" title="Abstract class for shunt power elements. ">Shunt</a> capactior power element. + <a href="class_capacitor.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_capacitor_8h_source.html">Capacitor.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Capacitor:</div> <div class="dyncontent"> <div class="center"> <img src="class_capacitor.png" usemap="#Capacitor_map" alt=""/> <map id="Capacitor_map" name="Capacitor_map"> -<area href="class_shunt.html" alt="Shunt" shape="rect" coords="0,112,92,136"/> -<area href="class_power_element.html" alt="PowerElement" shape="rect" coords="0,56,92,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,92,24"/> +<area href="class_shunt.html" title="Abstract class for shunt power elements. " alt="Shunt" shape="rect" coords="0,112,92,136"/> +<area href="class_power_element.html" title="Abstract class of power elements. " alt="PowerElement" shape="rect" coords="0,56,92,80"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,92,24"/> </map> </div></div> <table class="memberdecls"> @@ -531,8 +536,11 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <tr class="separator:a902525eebbb4bf3ecaab0e1e60b6f017 inherit pro_methods_class_shunt"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_capacitor_8h_source.html#l00031">31</a> of file <a class="el" href="_capacitor_8h_source.html">Capacitor.h</a>.</p> +<div class="textblock"><p><a class="el" href="class_shunt.html" title="Abstract class for shunt power elements. ">Shunt</a> capactior power element. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_capacitor_8h_source.html#l00038">38</a> of file <a class="el" href="_capacitor_8h_source.html">Capacitor.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="ace755e5bc3cc72b491ce31c24c54a5cf"></a> <h2 class="memtitle"><span class="permalink"><a href="#ace755e5bc3cc72b491ce31c24c54a5cf">◆ </a></span>AddParent()</h2> @@ -571,7 +579,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Add a parent to the element. This method must be used on power elements that connect to a bus, so the parent must be a bus. The element basic points are calculated in this method, so apply this when the element is being inserted. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html">Element</a> parent. </td></tr> + <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> parent. </td></tr> <tr><td class="paramname">position</td><td><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> position in the parent. </td></tr> </table> </dd> @@ -887,7 +895,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/class_connection_line.html b/docs/doxygen/html/class_connection_line.html index 1818ccc..131c5ce 100644 --- a/docs/doxygen/html/class_connection_line.html +++ b/docs/doxygen/html/class_connection_line.html @@ -105,7 +105,7 @@ Inheritance diagram for ConnectionLine:</div> <img src="class_connection_line.png" usemap="#ConnectionLine_map" alt=""/> <map id="ConnectionLine_map" name="ConnectionLine_map"> <area href="class_control_element.html" alt="ControlElement" shape="rect" coords="0,56,100,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,100,24"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,100,24"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_constant.html b/docs/doxygen/html/class_constant.html index b14b5c9..433d2d7 100644 --- a/docs/doxygen/html/class_constant.html +++ b/docs/doxygen/html/class_constant.html @@ -104,7 +104,7 @@ Inheritance diagram for Constant:</div> <img src="class_constant.png" usemap="#Constant_map" alt=""/> <map id="Constant_map" name="Constant_map"> <area href="class_control_element.html" alt="ControlElement" shape="rect" coords="0,56,97,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,97,24"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,97,24"/> </map> </div></div> <table class="memberdecls"> @@ -718,7 +718,7 @@ Additional Inherited Members</h2></td></tr> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/class_control_element.html b/docs/doxygen/html/class_control_element.html index bf511f1..01f556a 100644 --- a/docs/doxygen/html/class_control_element.html +++ b/docs/doxygen/html/class_control_element.html @@ -100,17 +100,17 @@ Inheritance diagram for ControlElement:</div> <div class="center"> <img src="class_control_element.png" usemap="#ControlElement_map" alt=""/> <map id="ControlElement_map" name="ControlElement_map"> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,109,24"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,109,24"/> <area href="class_connection_line.html" title="Connection between two control elements or other connection line and an element. " alt="ConnectionLine" shape="rect" coords="119,112,228,136"/> <area href="class_constant.html" title="A control element that provides a constant value. " alt="Constant" shape="rect" coords="119,168,228,192"/> -<area href="class_exponential.html" title="Generates an output following an exponential function. . " alt="Exponential" shape="rect" coords="119,224,228,248"/> -<area href="class_gain.html" title="Provide an output multiplying the input by a constant. . " alt="Gain" shape="rect" coords="119,280,228,304"/> +<area href="class_exponential.html" title="Generates an output following an exponential function. " alt="Exponential" shape="rect" coords="119,224,228,248"/> +<area href="class_gain.html" title="Provide an output multiplying the input by a constant. " alt="Gain" shape="rect" coords="119,280,228,304"/> <area href="class_i_o_control.html" title="Provides the communication with the power element. " alt="IOControl" shape="rect" coords="119,336,228,360"/> <area href="class_limiter.html" title="Limits the input value by superior and inferior values. " alt="Limiter" shape="rect" coords="119,392,228,416"/> <area href="class_multiplier.html" title="Multiplies two inputs. " alt="Multiplier" shape="rect" coords="119,448,228,472"/> <area href="class_rate_limiter.html" title="Limits the rising and/or falling rate. " alt="RateLimiter" shape="rect" coords="119,504,228,528"/> -<area href="class_sum.html" alt="Sum" shape="rect" coords="119,560,228,584"/> -<area href="class_transfer_function.html" alt="TransferFunction" shape="rect" coords="119,616,228,640"/> +<area href="class_sum.html" title="Sum the all inputs (can choose the input signal). " alt="Sum" shape="rect" coords="119,560,228,584"/> +<area href="class_transfer_function.html" title="Calculates the time response by a frequency domain transfer function. " alt="TransferFunction" shape="rect" coords="119,616,228,640"/> </map> </div></div> <table class="memberdecls"> diff --git a/docs/doxygen/html/class_electric_calculation.html b/docs/doxygen/html/class_electric_calculation.html index ccd0b4e..8ec98e6 100644 --- a/docs/doxygen/html/class_electric_calculation.html +++ b/docs/doxygen/html/class_electric_calculation.html @@ -93,6 +93,9 @@ $(document).ready(function(){initNavTree('class_electric_calculation.html','');} </div><!--header--> <div class="contents"> +<p>Base class of electric calculations, with general methods. + <a href="class_electric_calculation.html#details">More...</a></p> + <p><code>#include <<a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>></code></p> <div class="dynheader"> Inheritance diagram for ElectricCalculation:</div> @@ -100,9 +103,9 @@ Inheritance diagram for ElectricCalculation:</div> <div class="center"> <img src="class_electric_calculation.png" usemap="#ElectricCalculation_map" alt=""/> <map id="ElectricCalculation_map" name="ElectricCalculation_map"> -<area href="class_electromechanical.html" alt="Electromechanical" shape="rect" coords="0,56,118,80"/> -<area href="class_fault.html" alt="Fault" shape="rect" coords="128,56,246,80"/> -<area href="class_power_flow.html" alt="PowerFlow" shape="rect" coords="256,56,374,80"/> +<area href="class_electromechanical.html" title="Calculates the electromechanical transient based on disturbances (e.g. system fault). " alt="Electromechanical" shape="rect" coords="0,56,118,80"/> +<area href="class_fault.html" title="Calculate the fault of the system and update the elements data. " alt="Fault" shape="rect" coords="128,56,246,80"/> +<area href="class_power_flow.html" title="Calculate the power flow. " alt="PowerFlow" shape="rect" coords="256,56,374,80"/> </map> </div></div> <table class="memberdecls"> @@ -211,7 +214,8 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <tr class="separator:a6cca6be3c0b79741a49b1631e38fc3be"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira </dd></dl> +<div class="textblock"><p>Base class of electric calculations, with general methods. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira </dd></dl> <dl class="section date"><dt>Date</dt><dd>09/01/2017 </dd></dl> <p class="definition">Definition at line <a class="el" href="_electric_calculation_8h_source.html#l00066">66</a> of file <a class="el" href="_electric_calculation_8h_source.html">ElectricCalculation.h</a>.</p> diff --git a/docs/doxygen/html/class_electromechanical.html b/docs/doxygen/html/class_electromechanical.html index 1cc28de..27527be 100644 --- a/docs/doxygen/html/class_electromechanical.html +++ b/docs/doxygen/html/class_electromechanical.html @@ -95,6 +95,9 @@ $(document).ready(function(){initNavTree('class_electromechanical.html','');}); </div><!--header--> <div class="contents"> +<p>Calculates the electromechanical transient based on disturbances (e.g. system fault). + <a href="class_electromechanical.html#details">More...</a></p> + <p><code>#include <<a class="el" href="_electromechanical_8h_source.html">Electromechanical.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Electromechanical:</div> @@ -102,7 +105,7 @@ Inheritance diagram for Electromechanical:</div> <div class="center"> <img src="class_electromechanical.png" usemap="#Electromechanical_map" alt=""/> <map id="Electromechanical_map" name="Electromechanical_map"> -<area href="class_electric_calculation.html" alt="ElectricCalculation" shape="rect" coords="0,0,118,24"/> +<area href="class_electric_calculation.html" title="Base class of electric calculations, with general methods. " alt="ElectricCalculation" shape="rect" coords="0,0,118,24"/> </map> </div></div> <table class="memberdecls"> @@ -378,7 +381,8 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <tr class="separator:a6cca6be3c0b79741a49b1631e38fc3be inherit pro_attribs_class_electric_calculation"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<div class="textblock"><p>Calculates the electromechanical transient based on disturbances (e.g. system fault). </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> <dl class="section date"><dt>Date</dt><dd>23/09/2017 </dd></dl> <p class="definition">Definition at line <a class="el" href="_electromechanical_8h_source.html#l00051">51</a> of file <a class="el" href="_electromechanical_8h_source.html">Electromechanical.h</a>.</p> diff --git a/docs/doxygen/html/class_element.html b/docs/doxygen/html/class_element.html index e22ec4d..2045891 100644 --- a/docs/doxygen/html/class_element.html +++ b/docs/doxygen/html/class_element.html @@ -94,6 +94,9 @@ $(document).ready(function(){initNavTree('class_element.html','');}); </div><!--header--> <div class="contents"> +<p>Base class of all elements of the program. This class is responsible for manage graphical and his data. + <a href="class_element.html#details">More...</a></p> + <p><code>#include <<a class="el" href="_element_8h_source.html">Element.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Element:</div> @@ -102,23 +105,23 @@ Inheritance diagram for Element:</div> <img src="class_element.png" usemap="#Element_map" alt=""/> <map id="Element_map" name="Element_map"> <area href="class_control_element.html" alt="ControlElement" shape="rect" coords="0,56,111,80"/> -<area href="class_graphical_element.html" alt="GraphicalElement" shape="rect" coords="242,56,353,80"/> -<area href="class_power_element.html" alt="PowerElement" shape="rect" coords="363,56,474,80"/> +<area href="class_graphical_element.html" title="Abstract class for graphical elements shown with power elements in workspace. " alt="GraphicalElement" shape="rect" coords="242,56,353,80"/> +<area href="class_power_element.html" title="Abstract class of power elements. " alt="PowerElement" shape="rect" coords="363,56,474,80"/> <area href="class_connection_line.html" title="Connection between two control elements or other connection line and an element. " alt="ConnectionLine" shape="rect" coords="121,112,232,136"/> <area href="class_constant.html" title="A control element that provides a constant value. " alt="Constant" shape="rect" coords="121,168,232,192"/> -<area href="class_exponential.html" title="Generates an output following an exponential function. . " alt="Exponential" shape="rect" coords="121,224,232,248"/> -<area href="class_gain.html" title="Provide an output multiplying the input by a constant. . " alt="Gain" shape="rect" coords="121,280,232,304"/> +<area href="class_exponential.html" title="Generates an output following an exponential function. " alt="Exponential" shape="rect" coords="121,224,232,248"/> +<area href="class_gain.html" title="Provide an output multiplying the input by a constant. " alt="Gain" shape="rect" coords="121,280,232,304"/> <area href="class_i_o_control.html" title="Provides the communication with the power element. " alt="IOControl" shape="rect" coords="121,336,232,360"/> <area href="class_limiter.html" title="Limits the input value by superior and inferior values. " alt="Limiter" shape="rect" coords="121,392,232,416"/> <area href="class_multiplier.html" title="Multiplies two inputs. " alt="Multiplier" shape="rect" coords="121,448,232,472"/> <area href="class_rate_limiter.html" title="Limits the rising and/or falling rate. " alt="RateLimiter" shape="rect" coords="121,504,232,528"/> -<area href="class_sum.html" alt="Sum" shape="rect" coords="121,560,232,584"/> -<area href="class_transfer_function.html" alt="TransferFunction" shape="rect" coords="121,616,232,640"/> -<area href="class_text.html" alt="Text" shape="rect" coords="242,112,353,136"/> -<area href="class_branch.html" alt="Branch" shape="rect" coords="484,112,595,136"/> -<area href="class_bus.html" alt="Bus" shape="rect" coords="484,168,595,192"/> -<area href="class_machines.html" alt="Machines" shape="rect" coords="484,224,595,248"/> -<area href="class_shunt.html" alt="Shunt" shape="rect" coords="484,280,595,304"/> +<area href="class_sum.html" title="Sum the all inputs (can choose the input signal). " alt="Sum" shape="rect" coords="121,560,232,584"/> +<area href="class_transfer_function.html" title="Calculates the time response by a frequency domain transfer function. " alt="TransferFunction" shape="rect" coords="121,616,232,640"/> +<area href="class_text.html" title="Element that shows power element informations in workspace. " alt="Text" shape="rect" coords="242,112,353,136"/> +<area href="class_branch.html" title="Abstract class for branch power elements. " alt="Branch" shape="rect" coords="484,112,595,136"/> +<area href="class_bus.html" title="Node for power elements. All others power elements are connected through this. " alt="Bus" shape="rect" coords="484,168,595,192"/> +<area href="class_machines.html" title="Abstract class for rotary machines power elements. " alt="Machines" shape="rect" coords="484,224,595,248"/> +<area href="class_shunt.html" title="Abstract class for shunt power elements. " alt="Shunt" shape="rect" coords="484,280,595,304"/> </map> </div></div> <table class="memberdecls"> @@ -425,7 +428,8 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <tr class="separator:ab0df145138fef6ed901ff4b1828439b0"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<div class="textblock"><p>Base class of all elements of the program. This class is responsible for manage graphical and his data. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> <dl class="section date"><dt>Date</dt><dd>19/09/2017 </dd></dl> <p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00113">113</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> @@ -503,7 +507,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Add a parent to the element. This method must be used on power elements that connect to a bus, so the parent must be a bus. The element basic points are calculated in this method, so apply this when the element is being inserted. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html">Element</a> parent. </td></tr> + <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> parent. </td></tr> <tr><td class="paramname">position</td><td><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> position in the parent. </td></tr> </table> </dd> @@ -542,7 +546,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Add a parent to the element. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html">Element</a> parent. </td></tr> + <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> parent. </td></tr> </table> </dd> </dl> @@ -670,7 +674,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p>Implemented in <a class="el" href="class_transformer.html#a327ff3cf9194c18049e4feac6761ebc0">Transformer</a>, <a class="el" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Text</a>, <a class="el" href="class_bus.html#ad2b960058be6e990463b53d79c74c7a3">Bus</a>, <a class="el" href="class_line.html#a05eb3761f198a058045f85d6e685ca97">Line</a>, <a class="el" href="class_i_o_control.html#aa064c5d70e562334e2b374f919f42ef1">IOControl</a>, <a class="el" href="class_gain.html#a9d80d49f5123cf4859bf15a251e3923f">Gain</a>, <a class="el" href="class_constant.html#ae091eb79633beb158dc06880424f7ce6">Constant</a>, <a class="el" href="class_transfer_function.html#a6a4415d2cf0af290494ea30d586cc187">TransferFunction</a>, <a class="el" href="class_capacitor.html#a994039e59a8ae0ec3fe7cf7f5b66e4e5">Capacitor</a>, <a class="el" href="class_inductor.html#ac3ba7de94a328b20ff86e968a6228f60">Inductor</a>, <a class="el" href="class_exponential.html#a79eabfca357002f160b082a6df9f6f2b">Exponential</a>, <a class="el" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f">ConnectionLine</a>, <a class="el" href="class_limiter.html#ac6506d59da4ea682d9e556564ec3ad11">Limiter</a>, <a class="el" href="class_multiplier.html#acee6216a03b550f3a9cad2bef3963a18">Multiplier</a>, <a class="el" href="class_rate_limiter.html#addf0eef395781b8584063a9061be59dc">RateLimiter</a>, <a class="el" href="class_machines.html#acda27b0ea8a7b0fb00d647d8744f346e">Machines</a>, <a class="el" href="class_sum.html#a1d1b52ca1b9a81d53c0a9cf140546987">Sum</a>, <a class="el" href="class_branch.html#a691f94c3cd2abe1274e870d2882634d8">Branch</a>, and <a class="el" href="class_shunt.html#a449431a2044b838d35cbb991aa1de658">Shunt</a>.</p> +<p>Implemented in <a class="el" href="class_transformer.html#a327ff3cf9194c18049e4feac6761ebc0">Transformer</a>, <a class="el" href="class_text.html#a51c55b9272f653cfc3cdafe665d5dde0">Text</a>, <a class="el" href="class_bus.html#ad2b960058be6e990463b53d79c74c7a3">Bus</a>, <a class="el" href="class_line.html#a05eb3761f198a058045f85d6e685ca97">Line</a>, <a class="el" href="class_i_o_control.html#aa064c5d70e562334e2b374f919f42ef1">IOControl</a>, <a class="el" href="class_transfer_function.html#a6a4415d2cf0af290494ea30d586cc187">TransferFunction</a>, <a class="el" href="class_capacitor.html#a994039e59a8ae0ec3fe7cf7f5b66e4e5">Capacitor</a>, <a class="el" href="class_inductor.html#ac3ba7de94a328b20ff86e968a6228f60">Inductor</a>, <a class="el" href="class_constant.html#ae091eb79633beb158dc06880424f7ce6">Constant</a>, <a class="el" href="class_gain.html#a9d80d49f5123cf4859bf15a251e3923f">Gain</a>, <a class="el" href="class_machines.html#acda27b0ea8a7b0fb00d647d8744f346e">Machines</a>, <a class="el" href="class_sum.html#a1d1b52ca1b9a81d53c0a9cf140546987">Sum</a>, <a class="el" href="class_connection_line.html#a65c6d7139587c973a92dd1009909597f">ConnectionLine</a>, <a class="el" href="class_exponential.html#a79eabfca357002f160b082a6df9f6f2b">Exponential</a>, <a class="el" href="class_limiter.html#ac6506d59da4ea682d9e556564ec3ad11">Limiter</a>, <a class="el" href="class_multiplier.html#acee6216a03b550f3a9cad2bef3963a18">Multiplier</a>, <a class="el" href="class_rate_limiter.html#addf0eef395781b8584063a9061be59dc">RateLimiter</a>, <a class="el" href="class_branch.html#a691f94c3cd2abe1274e870d2882634d8">Branch</a>, and <a class="el" href="class_shunt.html#a449431a2044b838d35cbb991aa1de658">Shunt</a>.</p> </div> </div> @@ -778,7 +782,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p>Reimplemented in <a class="el" href="class_transformer.html#a1e9e9ba48aa76bdd2ff2e973014ad422">Transformer</a>, <a class="el" href="class_bus.html#ae9022ca29399377d2fe0082bb762107c">Bus</a>, <a class="el" href="class_line.html#a297e12aa8ff0be5d344e245732487bdd">Line</a>, <a class="el" href="class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4">IOControl</a>, <a class="el" href="class_load.html#aaef52b18cc53fa2db996fb9cad5db181">Load</a>, <a class="el" href="class_gain.html#a42f48bfdfb3d6f593fcc599504dd2264">Gain</a>, <a class="el" href="class_constant.html#afc4d8739980ae1b57e9c5058c2e05591">Constant</a>, <a class="el" href="class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e">TransferFunction</a>, <a class="el" href="class_capacitor.html#a94d378c922467214b394931ec0eb01c8">Capacitor</a>, <a class="el" href="class_inductor.html#a97761292fac4f0da7ae3dc6ca4b4de54">Inductor</a>, <a class="el" href="class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339">Exponential</a>, <a class="el" href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">ConnectionLine</a>, <a class="el" href="class_limiter.html#a2e2960936ebfcc6589181b7948fba242">Limiter</a>, <a class="el" href="class_multiplier.html#ae854fd981a98aca93b286081cc9c19f3">Multiplier</a>, <a class="el" href="class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580">RateLimiter</a>, <a class="el" href="class_machines.html#af3279663c82de88e12f0487bfc633f7c">Machines</a>, <a class="el" href="class_sum.html#a31dbb6867b17188b4a8cc650983da57b">Sum</a>, and <a class="el" href="class_branch.html#a7037f496f9b9c9e64c74eb638debe278">Branch</a>.</p> +<p>Reimplemented in <a class="el" href="class_transformer.html#a1e9e9ba48aa76bdd2ff2e973014ad422">Transformer</a>, <a class="el" href="class_bus.html#ae9022ca29399377d2fe0082bb762107c">Bus</a>, <a class="el" href="class_line.html#a297e12aa8ff0be5d344e245732487bdd">Line</a>, <a class="el" href="class_load.html#aaef52b18cc53fa2db996fb9cad5db181">Load</a>, <a class="el" href="class_i_o_control.html#aa6aab56f8936a87f099241d9bad9fee4">IOControl</a>, <a class="el" href="class_transfer_function.html#a0cd1dec850117741abb04b608c7b3f1e">TransferFunction</a>, <a class="el" href="class_capacitor.html#a94d378c922467214b394931ec0eb01c8">Capacitor</a>, <a class="el" href="class_inductor.html#a97761292fac4f0da7ae3dc6ca4b4de54">Inductor</a>, <a class="el" href="class_machines.html#af3279663c82de88e12f0487bfc633f7c">Machines</a>, <a class="el" href="class_constant.html#afc4d8739980ae1b57e9c5058c2e05591">Constant</a>, <a class="el" href="class_gain.html#a42f48bfdfb3d6f593fcc599504dd2264">Gain</a>, <a class="el" href="class_sum.html#a31dbb6867b17188b4a8cc650983da57b">Sum</a>, <a class="el" href="class_branch.html#a7037f496f9b9c9e64c74eb638debe278">Branch</a>, <a class="el" href="class_connection_line.html#a71cb3502dd098e1d1ef541668789586e">ConnectionLine</a>, <a class="el" href="class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339">Exponential</a>, <a class="el" href="class_limiter.html#a2e2960936ebfcc6589181b7948fba242">Limiter</a>, <a class="el" href="class_multiplier.html#ae854fd981a98aca93b286081cc9c19f3">Multiplier</a>, and <a class="el" href="class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580">RateLimiter</a>.</p> <p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00302">302</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> @@ -882,7 +886,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Draw line. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">points</td><td><a class="el" href="class_line.html">Line</a> vertices. </td></tr> + <tr><td class="paramname">points</td><td><a class="el" href="class_line.html" title="Power line element. ">Line</a> vertices. </td></tr> <tr><td class="paramname">mode</td><td>OpenGl primitive. </td></tr> </table> </dd> @@ -1323,7 +1327,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Get a the element copy. </p> <dl class="section return"><dt>Returns</dt><dd>Copy of the element. </dd></dl> -<p>Reimplemented in <a class="el" href="class_sync_generator.html#a9130e8714c1518683540f587aca1201f">SyncGenerator</a>, <a class="el" href="class_sync_motor.html#a035b63a3dfd356daff0bf1cee9672313">SyncMotor</a>, <a class="el" href="class_transformer.html#a286bcc94f7202a6ff81b66707424a9bd">Transformer</a>, <a class="el" href="class_text.html#a06e740065c875633e458c0d8f860c43e">Text</a>, <a class="el" href="class_bus.html#a4288c4c84c8840705c3ce6ccd42e578c">Bus</a>, <a class="el" href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823">RateLimiter</a>, <a class="el" href="class_line.html#afc4916268d2a32014e4ab0f8308165a1">Line</a>, <a class="el" href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7">IOControl</a>, <a class="el" href="class_connection_line.html#a131a890bd54059c5370f1dc5156c192c">ConnectionLine</a>, <a class="el" href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862">TransferFunction</a>, <a class="el" href="class_gain.html#a489572e289935d7256c037af682b9351">Gain</a>, <a class="el" href="class_exponential.html#a85cda0dba6549828a9045e478e24609f">Exponential</a>, <a class="el" href="class_constant.html#ac566e3a63326d3f543a55af14ae0f8fa">Constant</a>, <a class="el" href="class_limiter.html#a6071e2308baa7b42f189f09fd1878245">Limiter</a>, <a class="el" href="class_multiplier.html#ab487232a96ed3c3f3a7c3628ddaa4c77">Multiplier</a>, <a class="el" href="class_sum.html#a0da96514e0462e47d3f57b79ddc457b6">Sum</a>, <a class="el" href="class_load.html#a27309c24b2c70bde37ba6afbb9679da2">Load</a>, <a class="el" href="class_ind_motor.html#ace3ce34ba500ec33bf37b9216ad636a8">IndMotor</a>, <a class="el" href="class_capacitor.html#a422e353b594ac6e4ef34e1f613f7d580">Capacitor</a>, and <a class="el" href="class_inductor.html#a4241ebd43388ebe88ec5888a15bc22d9">Inductor</a>.</p> +<p>Reimplemented in <a class="el" href="class_sync_generator.html#a9130e8714c1518683540f587aca1201f">SyncGenerator</a>, <a class="el" href="class_sync_motor.html#a035b63a3dfd356daff0bf1cee9672313">SyncMotor</a>, <a class="el" href="class_transformer.html#a286bcc94f7202a6ff81b66707424a9bd">Transformer</a>, <a class="el" href="class_text.html#a06e740065c875633e458c0d8f860c43e">Text</a>, <a class="el" href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862">TransferFunction</a>, <a class="el" href="class_bus.html#a4288c4c84c8840705c3ce6ccd42e578c">Bus</a>, <a class="el" href="class_line.html#afc4916268d2a32014e4ab0f8308165a1">Line</a>, <a class="el" href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823">RateLimiter</a>, <a class="el" href="class_i_o_control.html#a99303b5e9bd32affaed8f4e4084fc9f7">IOControl</a>, <a class="el" href="class_gain.html#a489572e289935d7256c037af682b9351">Gain</a>, <a class="el" href="class_connection_line.html#a131a890bd54059c5370f1dc5156c192c">ConnectionLine</a>, <a class="el" href="class_exponential.html#a85cda0dba6549828a9045e478e24609f">Exponential</a>, <a class="el" href="class_sum.html#a0da96514e0462e47d3f57b79ddc457b6">Sum</a>, <a class="el" href="class_constant.html#ac566e3a63326d3f543a55af14ae0f8fa">Constant</a>, <a class="el" href="class_limiter.html#a6071e2308baa7b42f189f09fd1878245">Limiter</a>, <a class="el" href="class_load.html#a27309c24b2c70bde37ba6afbb9679da2">Load</a>, <a class="el" href="class_multiplier.html#ab487232a96ed3c3f3a7c3628ddaa4c77">Multiplier</a>, <a class="el" href="class_ind_motor.html#ace3ce34ba500ec33bf37b9216ad636a8">IndMotor</a>, <a class="el" href="class_capacitor.html#a422e353b594ac6e4ef34e1f613f7d580">Capacitor</a>, and <a class="el" href="class_inductor.html#a4241ebd43388ebe88ec5888a15bc22d9">Inductor</a>.</p> <p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00262">262</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> @@ -1353,7 +1357,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </div><div class="memdoc"> <p>Get the element height. </p> -<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_element.html">Element</a> height. </dd></dl> +<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> height. </dd></dl> <p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00197">197</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> @@ -1383,7 +1387,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </div><div class="memdoc"> <p>Get the element ID. </p> -<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_element.html">Element</a> ID. </dd></dl> +<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> ID. </dd></dl> <p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00272">272</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> @@ -1473,7 +1477,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </div><div class="memdoc"> <p>Get the element position. </p> -<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_element.html">Element</a> position. </dd></dl> +<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> position. </dd></dl> <p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00187">187</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> @@ -1503,7 +1507,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </div><div class="memdoc"> <p>Get the element rectangle. </p> -<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_element.html">Element</a> rectangle. </dd></dl> +<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> rectangle. </dd></dl> <p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00182">182</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> @@ -1595,7 +1599,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </div><div class="memdoc"> <p>Get the element width. </p> -<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_element.html">Element</a> width. </dd></dl> +<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> width. </dd></dl> <p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00207">207</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> @@ -1633,7 +1637,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p>Implemented in <a class="el" href="class_transformer.html#a39b58fcf230970601c5d77c088559731">Transformer</a>, <a class="el" href="class_text.html#a9923c820cd77b411257ba48beceafeaa">Text</a>, <a class="el" href="class_bus.html#a5014be68f4bb5d8f1a1ea861b03bacdf">Bus</a>, <a class="el" href="class_line.html#a125581fc6d21c83565b902751af331dc">Line</a>, <a class="el" href="class_i_o_control.html#adebd59a32fd699ba4dff4dff44dfbf90">IOControl</a>, <a class="el" href="class_gain.html#a8768490f9cb20a6a8c9148d1c893e980">Gain</a>, <a class="el" href="class_constant.html#ac2e2c958b3d38ed381d59cbb361974b2">Constant</a>, <a class="el" href="class_transfer_function.html#a6325dec72c7b85178f490c5cf85229bd">TransferFunction</a>, <a class="el" href="class_capacitor.html#a6b06adb1ef3545b220e0b94ee6210b7a">Capacitor</a>, <a class="el" href="class_inductor.html#a3d331d2a725275a12489401180d4c1d1">Inductor</a>, <a class="el" href="class_exponential.html#a540b1a43045b9bb7c96d32825d15c95e">Exponential</a>, <a class="el" href="class_branch.html#aa23b1014c947e46996f1c0c4caa187e1">Branch</a>, <a class="el" href="class_connection_line.html#aaa3e63c2e48338e324ee7b58911c86b6">ConnectionLine</a>, <a class="el" href="class_limiter.html#ac9c1858dfc3b4d30b2eca0c4767a9f0e">Limiter</a>, <a class="el" href="class_multiplier.html#aba53ef763812fbff891cdf0b89c7fcca">Multiplier</a>, <a class="el" href="class_rate_limiter.html#a7c1ce7440e82613b455054dd8447f147">RateLimiter</a>, <a class="el" href="class_machines.html#a0a825ccdbd5059f9ae9f869d4b6e3ec4">Machines</a>, <a class="el" href="class_sum.html#ac8ed3db993dd3053b94ccac7da4a664e">Sum</a>, and <a class="el" href="class_shunt.html#afdbf0c51f9630589937298329bb041fe">Shunt</a>.</p> +<p>Implemented in <a class="el" href="class_transformer.html#a39b58fcf230970601c5d77c088559731">Transformer</a>, <a class="el" href="class_text.html#a9923c820cd77b411257ba48beceafeaa">Text</a>, <a class="el" href="class_bus.html#a5014be68f4bb5d8f1a1ea861b03bacdf">Bus</a>, <a class="el" href="class_line.html#a125581fc6d21c83565b902751af331dc">Line</a>, <a class="el" href="class_i_o_control.html#adebd59a32fd699ba4dff4dff44dfbf90">IOControl</a>, <a class="el" href="class_transfer_function.html#a6325dec72c7b85178f490c5cf85229bd">TransferFunction</a>, <a class="el" href="class_capacitor.html#a6b06adb1ef3545b220e0b94ee6210b7a">Capacitor</a>, <a class="el" href="class_inductor.html#a3d331d2a725275a12489401180d4c1d1">Inductor</a>, <a class="el" href="class_branch.html#aa23b1014c947e46996f1c0c4caa187e1">Branch</a>, <a class="el" href="class_machines.html#a0a825ccdbd5059f9ae9f869d4b6e3ec4">Machines</a>, <a class="el" href="class_constant.html#ac2e2c958b3d38ed381d59cbb361974b2">Constant</a>, <a class="el" href="class_gain.html#a8768490f9cb20a6a8c9148d1c893e980">Gain</a>, <a class="el" href="class_sum.html#ac8ed3db993dd3053b94ccac7da4a664e">Sum</a>, <a class="el" href="class_connection_line.html#aaa3e63c2e48338e324ee7b58911c86b6">ConnectionLine</a>, <a class="el" href="class_exponential.html#a540b1a43045b9bb7c96d32825d15c95e">Exponential</a>, <a class="el" href="class_limiter.html#ac9c1858dfc3b4d30b2eca0c4767a9f0e">Limiter</a>, <a class="el" href="class_multiplier.html#aba53ef763812fbff891cdf0b89c7fcca">Multiplier</a>, <a class="el" href="class_rate_limiter.html#a7c1ce7440e82613b455054dd8447f147">RateLimiter</a>, and <a class="el" href="class_shunt.html#afdbf0c51f9630589937298329bb041fe">Shunt</a>.</p> </div> </div> @@ -1850,7 +1854,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p>Reimplemented in <a class="el" href="class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708">ControlElement</a>, <a class="el" href="class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8">Transformer</a>, <a class="el" href="class_line.html#a3eabf6de2af4ee71f72ce4f091c69978">Line</a>, <a class="el" href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db">Gain</a>, <a class="el" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">ConnectionLine</a>, <a class="el" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Machines</a>, <a class="el" href="class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70">Branch</a>, and <a class="el" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Shunt</a>.</p> +<p>Reimplemented in <a class="el" href="class_control_element.html#ac8bd52ddb8eed51a217fecb2eed65708">ControlElement</a>, <a class="el" href="class_transformer.html#a67f1e2686932700fe8a83fdc232ea1e8">Transformer</a>, <a class="el" href="class_line.html#a3eabf6de2af4ee71f72ce4f091c69978">Line</a>, <a class="el" href="class_gain.html#aa303bcc736ac5fad1f89c6cc87e859db">Gain</a>, <a class="el" href="class_machines.html#a2f7450283dd36f4fc0847dfd50385c44">Machines</a>, <a class="el" href="class_connection_line.html#a49300d04c6dd4bcc6f4569c0c47780c7">ConnectionLine</a>, <a class="el" href="class_branch.html#a7cf4b117f43f49bb76cce3df5521fb70">Branch</a>, and <a class="el" href="class_shunt.html#aa98b8a2f097fc02fee1ea874e19480f3">Shunt</a>.</p> <p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00123">123</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> @@ -2137,7 +2141,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p>Reimplemented in <a class="el" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">Machines</a>, <a class="el" href="class_connection_line.html#a3f5584348b86e665161b033d4ce8d702">ConnectionLine</a>, <a class="el" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">Branch</a>, and <a class="el" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">Shunt</a>.</p> +<p>Reimplemented in <a class="el" href="class_machines.html#a002d852ddd0d73502a6bd819b5545026">Machines</a>, <a class="el" href="class_branch.html#aa0328a743090b2b7b3f33d57a867b6dc">Branch</a>, <a class="el" href="class_shunt.html#a665d9a8c291d427e666567c6df34321b">Shunt</a>, and <a class="el" href="class_connection_line.html#a3f5584348b86e665161b033d4ce8d702">ConnectionLine</a>.</p> <p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00359">359</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> @@ -2269,7 +2273,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p>Reimplemented in <a class="el" href="class_transformer.html#aaa6cc999eb77a94dafaec5debb4db3de">Transformer</a>, <a class="el" href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Text</a>, <a class="el" href="class_bus.html#ace039d00c23d36a7c14d7e4155c94791">Bus</a>, <a class="el" href="class_i_o_control.html#a47a5633ed68ef0648623b9733dc5dab9">IOControl</a>, <a class="el" href="class_gain.html#ae19d739112c3aad30c58bdfd98f442e7">Gain</a>, <a class="el" href="class_machines.html#acff264f0c80d97a966ff97401f2f142a">Machines</a>, <a class="el" href="class_constant.html#a867addfc3c1a755b7aa0032d119245c6">Constant</a>, <a class="el" href="class_load.html#a46e9f2e0935ecca77b3a46568404d8e3">Load</a>, <a class="el" href="class_transfer_function.html#ae145b86db1450a19a3ed32084ee60423">TransferFunction</a>, <a class="el" href="class_capacitor.html#a2c3f0949c2b791c6a0b69866e9aaff7a">Capacitor</a>, <a class="el" href="class_exponential.html#a0714869ee8815119a6d76431bac767ea">Exponential</a>, <a class="el" href="class_inductor.html#a801bb445c01059558902c0eca4d38cdd">Inductor</a>, <a class="el" href="class_limiter.html#ab9c3aa47fd2fd4903be2dd600f658d25">Limiter</a>, <a class="el" href="class_multiplier.html#ae01f155ed56925cb87d71a860882a3a1">Multiplier</a>, <a class="el" href="class_rate_limiter.html#a3eb4d933b1d069808617306c78835f3e">RateLimiter</a>, and <a class="el" href="class_sum.html#a738bcb564fec2764055e4785227b5eea">Sum</a>.</p> +<p>Reimplemented in <a class="el" href="class_transformer.html#aaa6cc999eb77a94dafaec5debb4db3de">Transformer</a>, <a class="el" href="class_text.html#afe1f86a497f34cee4809cbd7fda24dc3">Text</a>, <a class="el" href="class_bus.html#ace039d00c23d36a7c14d7e4155c94791">Bus</a>, <a class="el" href="class_i_o_control.html#a47a5633ed68ef0648623b9733dc5dab9">IOControl</a>, <a class="el" href="class_machines.html#acff264f0c80d97a966ff97401f2f142a">Machines</a>, <a class="el" href="class_load.html#a46e9f2e0935ecca77b3a46568404d8e3">Load</a>, <a class="el" href="class_transfer_function.html#ae145b86db1450a19a3ed32084ee60423">TransferFunction</a>, <a class="el" href="class_capacitor.html#a2c3f0949c2b791c6a0b69866e9aaff7a">Capacitor</a>, <a class="el" href="class_inductor.html#a801bb445c01059558902c0eca4d38cdd">Inductor</a>, <a class="el" href="class_constant.html#a867addfc3c1a755b7aa0032d119245c6">Constant</a>, <a class="el" href="class_gain.html#ae19d739112c3aad30c58bdfd98f442e7">Gain</a>, <a class="el" href="class_sum.html#a738bcb564fec2764055e4785227b5eea">Sum</a>, <a class="el" href="class_exponential.html#a0714869ee8815119a6d76431bac767ea">Exponential</a>, <a class="el" href="class_limiter.html#ab9c3aa47fd2fd4903be2dd600f658d25">Limiter</a>, <a class="el" href="class_multiplier.html#ae01f155ed56925cb87d71a860882a3a1">Multiplier</a>, and <a class="el" href="class_rate_limiter.html#a3eb4d933b1d069808617306c78835f3e">RateLimiter</a>.</p> <p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00307">307</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> @@ -2610,7 +2614,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <p>Set the element ID. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">id</td><td><a class="el" href="class_element.html">Element</a> ID. </td></tr> + <tr><td class="paramname">id</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> ID. </td></tr> </table> </dd> </dl> @@ -2862,13 +2866,13 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>True if the form is shown, false otherwise. </dd></dl> -<p>Reimplemented in <a class="el" href="class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec">SyncGenerator</a>, <a class="el" href="class_sync_motor.html#a3201b22e0271517f5ed3df85da6cee6f">SyncMotor</a>, <a class="el" href="class_transformer.html#acb55f182a7f6d7af0feb6a94cb62af4f">Transformer</a>, <a class="el" href="class_bus.html#a93dbd8f80b11123395093f561d5241d0">Bus</a>, <a class="el" href="class_line.html#a24c6a659148f063c78e080a18f4517a1">Line</a>, <a class="el" href="class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439">IOControl</a>, <a class="el" href="class_load.html#a792367f35c97324328816fee156e5ecf">Load</a>, <a class="el" href="class_capacitor.html#a459b1bbdb153bb9720176661e2960ea6">Capacitor</a>, <a class="el" href="class_inductor.html#abfaf28fc70a71f3f85940eef7d1551c9">Inductor</a>, <a class="el" href="class_gain.html#a6b98027cbf545302867ad75f7ab84b93">Gain</a>, <a class="el" href="class_constant.html#af6bded0e01717303bb71da9e45c2b061">Constant</a>, <a class="el" href="class_ind_motor.html#add48c9a03d197a6279ca2e33af0fe286">IndMotor</a>, <a class="el" href="class_transfer_function.html#afe15de93ab4f93032560a6139091ef10">TransferFunction</a>, <a class="el" href="class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d">Exponential</a>, <a class="el" href="class_limiter.html#a31fd227e010e7d39f1435a70709b14e3">Limiter</a>, <a class="el" href="class_multiplier.html#a4fa1206b47c626930db753a70e01680d">Multiplier</a>, <a class="el" href="class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60">RateLimiter</a>, and <a class="el" href="class_sum.html#a8c4bfb1dc965d8ac246de59d1f10888b">Sum</a>.</p> +<p>Reimplemented in <a class="el" href="class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec">SyncGenerator</a>, <a class="el" href="class_sync_motor.html#a3201b22e0271517f5ed3df85da6cee6f">SyncMotor</a>, <a class="el" href="class_transformer.html#acb55f182a7f6d7af0feb6a94cb62af4f">Transformer</a>, <a class="el" href="class_bus.html#a93dbd8f80b11123395093f561d5241d0">Bus</a>, <a class="el" href="class_line.html#a24c6a659148f063c78e080a18f4517a1">Line</a>, <a class="el" href="class_load.html#a792367f35c97324328816fee156e5ecf">Load</a>, <a class="el" href="class_capacitor.html#a459b1bbdb153bb9720176661e2960ea6">Capacitor</a>, <a class="el" href="class_inductor.html#abfaf28fc70a71f3f85940eef7d1551c9">Inductor</a>, <a class="el" href="class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439">IOControl</a>, <a class="el" href="class_ind_motor.html#add48c9a03d197a6279ca2e33af0fe286">IndMotor</a>, <a class="el" href="class_transfer_function.html#afe15de93ab4f93032560a6139091ef10">TransferFunction</a>, <a class="el" href="class_constant.html#af6bded0e01717303bb71da9e45c2b061">Constant</a>, <a class="el" href="class_gain.html#a6b98027cbf545302867ad75f7ab84b93">Gain</a>, <a class="el" href="class_sum.html#a8c4bfb1dc965d8ac246de59d1f10888b">Sum</a>, <a class="el" href="class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d">Exponential</a>, <a class="el" href="class_limiter.html#a31fd227e010e7d39f1435a70709b14e3">Limiter</a>, <a class="el" href="class_multiplier.html#a4fa1206b47c626930db753a70e01680d">Multiplier</a>, and <a class="el" href="class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60">RateLimiter</a>.</p> <p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00534">534</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> @@ -2942,7 +2946,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ </dd> </dl> -<p>Reimplemented in <a class="el" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">ControlElement</a>, <a class="el" href="class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5">Transformer</a>, <a class="el" href="class_line.html#abb812387508a9971570bfa1d38e41041">Line</a>, <a class="el" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36">ConnectionLine</a>, <a class="el" href="class_machines.html#acbefe76cd5161b5684a27205b155e797">Machines</a>, <a class="el" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">Shunt</a>, and <a class="el" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64">Branch</a>.</p> +<p>Reimplemented in <a class="el" href="class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5">Transformer</a>, <a class="el" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">ControlElement</a>, <a class="el" href="class_line.html#abb812387508a9971570bfa1d38e41041">Line</a>, <a class="el" href="class_machines.html#acbefe76cd5161b5684a27205b155e797">Machines</a>, <a class="el" href="class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36">ConnectionLine</a>, <a class="el" href="class_shunt.html#a56d6136d647f64cf490dd9d7720f6865">Shunt</a>, and <a class="el" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64">Branch</a>.</p> <p class="definition">Definition at line <a class="el" href="_element_8cpp_source.html#l00117">117</a> of file <a class="el" href="_element_8cpp_source.html">Element.cpp</a>.</p> diff --git a/docs/doxygen/html/class_element_data_object.html b/docs/doxygen/html/class_element_data_object.html index f8fc6b8..0acfd3b 100644 --- a/docs/doxygen/html/class_element_data_object.html +++ b/docs/doxygen/html/class_element_data_object.html @@ -92,6 +92,11 @@ $(document).ready(function(){initNavTree('class_element_data_object.html','');}) <div class="title">ElementDataObject Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Class to store the elements in the clipboard. + <a href="class_element_data_object.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_element_data_object_8h_source.html">ElementDataObject.h</a>></code></p> <div class="dynheader"> Inheritance diagram for ElementDataObject:</div> <div class="dyncontent"> @@ -126,8 +131,11 @@ Protected Attributes</h2></td></tr> <tr class="separator:a3da83a9dbd280969d26bee208e2566ac"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_element_data_object_8h_source.html#l00029">29</a> of file <a class="el" href="_element_data_object_8h_source.html">ElementDataObject.h</a>.</p> +<div class="textblock"><p>Class to store the elements in the clipboard. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_element_data_object_8h_source.html#l00036">36</a> of file <a class="el" href="_element_data_object_8h_source.html">ElementDataObject.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_element_data_object_8h_source.html">ElementDataObject.h</a></li> <li>Project/<a class="el" href="_element_data_object_8cpp_source.html">ElementDataObject.cpp</a></li> diff --git a/docs/doxygen/html/class_element_plot_data.html b/docs/doxygen/html/class_element_plot_data.html index 49e37fa..cda9cc2 100644 --- a/docs/doxygen/html/class_element_plot_data.html +++ b/docs/doxygen/html/class_element_plot_data.html @@ -195,7 +195,7 @@ std::vector< <a class="el" href="class_plot_data.html">PlotData</a> * > </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_element_plot_data_8h_source.html#l00056">56</a> of file <a class="el" href="_element_plot_data_8h_source.html">ElementPlotData.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_element_plot_data_8h_source.html#l00064">64</a> of file <a class="el" href="_element_plot_data_8h_source.html">ElementPlotData.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_element_plot_data_8h_source.html">ElementPlotData.h</a></li> <li>Project/<a class="el" href="_element_plot_data_8cpp_source.html">ElementPlotData.cpp</a></li> diff --git a/docs/doxygen/html/class_exponential-members.html b/docs/doxygen/html/class_exponential-members.html index dea5915..32393c9 100644 --- a/docs/doxygen/html/class_exponential-members.html +++ b/docs/doxygen/html/class_exponential-members.html @@ -198,7 +198,7 @@ $(document).ready(function(){initNavTree('class_exponential.html','');}); <tr class="even"><td class="entry"><a class="el" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(double width)</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> <tr><td class="entry"><a class="el" href="class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d">ShowForm</a>(wxWindow *parent, Element *element)</td><td class="entry"><a class="el" href="class_exponential.html">Exponential</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> <tr class="even"><td class="entry"><a class="el" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>(bool showPickbox=true)</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>Solve</b>(double input, double timeStep) (defined in <a class="el" href="class_exponential.html">Exponential</a>)</td><td class="entry"><a class="el" href="class_exponential.html">Exponential</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_exponential.html#ae8e635b32b5d6a8226a3654aa639094f">Solve</a>(double input, double timeStep)</td><td class="entry"><a class="el" href="class_exponential.html">Exponential</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> <tr class="even"><td class="entry"><a class="el" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(wxPoint2DDouble position)</td><td class="entry"><a class="el" href="class_control_element.html">ControlElement</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> <tr><td class="entry"><a class="el" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(double value, int minDecimal=1)</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">static</span></td></tr> <tr class="even"><td class="entry"><a class="el" href="class_element.html#a499c3b52be27d2bf436a13b6f5353b9c">UpdateNodes</a>()</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr> diff --git a/docs/doxygen/html/class_exponential.html b/docs/doxygen/html/class_exponential.html index c5a7707..f7b9b7b 100644 --- a/docs/doxygen/html/class_exponential.html +++ b/docs/doxygen/html/class_exponential.html @@ -93,7 +93,7 @@ $(document).ready(function(){initNavTree('class_exponential.html','');}); </div><!--header--> <div class="contents"> -<p>Generates an output following an exponential function. \( output = A\cdot e^{B\cdot input} \). +<p>Generates an output following an exponential function. <a href="class_exponential.html#details">More...</a></p> <p><code>#include <<a class="el" href="_exponential_8h_source.html">Exponential.h</a>></code></p> @@ -104,7 +104,7 @@ Inheritance diagram for Exponential:</div> <img src="class_exponential.png" usemap="#Exponential_map" alt=""/> <map id="Exponential_map" name="Exponential_map"> <area href="class_control_element.html" alt="ControlElement" shape="rect" coords="0,56,97,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,97,24"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,97,24"/> </map> </div></div> <table class="memberdecls"> @@ -137,8 +137,8 @@ virtual void </td><td class="memItemRight" valign="bottom"><b>GetValues</b> <tr class="memitem:a0ebfd386bebb9a1f9d41a3eca0daed3b"><td class="memItemLeft" align="right" valign="top"><a id="a0ebfd386bebb9a1f9d41a3eca0daed3b"></a> virtual void </td><td class="memItemRight" valign="bottom"><b>SetValues</b> (double aValue, double bValue)</td></tr> <tr class="separator:a0ebfd386bebb9a1f9d41a3eca0daed3b"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ae8e635b32b5d6a8226a3654aa639094f"><td class="memItemLeft" align="right" valign="top"><a id="ae8e635b32b5d6a8226a3654aa639094f"></a> -virtual bool </td><td class="memItemRight" valign="bottom"><b>Solve</b> (double input, double timeStep)</td></tr> +<tr class="memitem:ae8e635b32b5d6a8226a3654aa639094f"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_exponential.html#ae8e635b32b5d6a8226a3654aa639094f">Solve</a> (double input, double timeStep)</td></tr> +<tr class="memdesc:ae8e635b32b5d6a8226a3654aa639094f"><td class="mdescLeft"> </td><td class="mdescRight">Calculates the exponential. <a href="#ae8e635b32b5d6a8226a3654aa639094f">More...</a><br /></td></tr> <tr class="separator:ae8e635b32b5d6a8226a3654aa639094f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a85cda0dba6549828a9045e478e24609f"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_element.html">Element</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_exponential.html#a85cda0dba6549828a9045e478e24609f">GetCopy</a> ()</td></tr> <tr class="memdesc:a85cda0dba6549828a9045e478e24609f"><td class="mdescLeft"> </td><td class="mdescRight">Get a the element copy. <a href="#a85cda0dba6549828a9045e478e24609f">More...</a><br /></td></tr> @@ -476,11 +476,11 @@ Additional Inherited Members</h2></td></tr> <tr class="separator:abb2e253ec1e86353cd7160209c96553c inherit pub_static_methods_class_element"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Generates an output following an exponential function. \( output = A\cdot e^{B\cdot input} \). </p> +<div class="textblock"><p>Generates an output following an exponential function. </p> <dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> <dl class="section date"><dt>Date</dt><dd>05/10/2017 </dd></dl> -<p class="definition">Definition at line <a class="el" href="_exponential_8h_source.html#l00033">33</a> of file <a class="el" href="_exponential_8h_source.html">Exponential.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_exponential_8h_source.html#l00032">32</a> of file <a class="el" href="_exponential_8h_source.html">Exponential.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a79eabfca357002f160b082a6df9f6f2b"></a> <h2 class="memtitle"><span class="permalink"><a href="#a79eabfca357002f160b082a6df9f6f2b">◆ </a></span>Contains()</h2> @@ -516,7 +516,7 @@ Additional Inherited Members</h2></td></tr> <p>Implements <a class="el" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_exponential_8h_source.html#l00040">40</a> of file <a class="el" href="_exponential_8h_source.html">Exponential.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_exponential_8h_source.html#l00039">39</a> of file <a class="el" href="_exponential_8h_source.html">Exponential.h</a>.</p> </div> </div> @@ -635,7 +635,7 @@ Additional Inherited Members</h2></td></tr> <p>Implements <a class="el" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_exponential_8h_source.html#l00041">41</a> of file <a class="el" href="_exponential_8h_source.html">Exponential.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_exponential_8h_source.html#l00040">40</a> of file <a class="el" href="_exponential_8h_source.html">Exponential.h</a>.</p> </div> </div> @@ -715,7 +715,7 @@ Additional Inherited Members</h2></td></tr> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> @@ -727,6 +727,56 @@ Additional Inherited Members</h2></td></tr> </div> </div> +<a id="ae8e635b32b5d6a8226a3654aa639094f"></a> +<h2 class="memtitle"><span class="permalink"><a href="#ae8e635b32b5d6a8226a3654aa639094f">◆ </a></span>Solve()</h2> + +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">bool Exponential::Solve </td> + <td>(</td> + <td class="paramtype">double </td> + <td class="paramname"><em>input</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">double </td> + <td class="paramname"><em>timeStep</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Calculates the exponential. </p> +<center> \( output = A\cdot e^{B\cdot input} \)</center> <dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">input</td><td>Input value. </td></tr> + <tr><td class="paramname">timeStep</td><td>Time step. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>Aways true. </dd></dl> + +<p>Reimplemented from <a class="el" href="class_control_element.html">ControlElement</a>.</p> + +<p class="definition">Definition at line <a class="el" href="_exponential_8cpp_source.html#l00132">132</a> of file <a class="el" href="_exponential_8cpp_source.html">Exponential.cpp</a>.</p> + +</div> +</div> <hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_exponential_8h_source.html">Exponential.h</a></li> <li>Project/<a class="el" href="_exponential_8cpp_source.html">Exponential.cpp</a></li> diff --git a/docs/doxygen/html/class_fault.html b/docs/doxygen/html/class_fault.html index bfc3d5d..e02dde7 100644 --- a/docs/doxygen/html/class_fault.html +++ b/docs/doxygen/html/class_fault.html @@ -93,6 +93,9 @@ $(document).ready(function(){initNavTree('class_fault.html','');}); </div><!--header--> <div class="contents"> +<p>Calculate the fault of the system and update the elements data. + <a href="class_fault.html#details">More...</a></p> + <p><code>#include <<a class="el" href="_fault_8h_source.html">Fault.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Fault:</div> @@ -100,7 +103,7 @@ Inheritance diagram for Fault:</div> <div class="center"> <img src="class_fault.png" usemap="#Fault_map" alt=""/> <map id="Fault_map" name="Fault_map"> -<area href="class_electric_calculation.html" alt="ElectricCalculation" shape="rect" coords="0,0,118,24"/> +<area href="class_electric_calculation.html" title="Base class of electric calculations, with general methods. " alt="ElectricCalculation" shape="rect" coords="0,0,118,24"/> </map> </div></div> <table class="memberdecls"> @@ -276,7 +279,8 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <tr class="separator:a6cca6be3c0b79741a49b1631e38fc3be inherit pro_attribs_class_electric_calculation"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira </dd></dl> +<div class="textblock"><p>Calculate the fault of the system and update the elements data. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira </dd></dl> <dl class="section date"><dt>Date</dt><dd>10/01/2017 </dd></dl> <p class="definition">Definition at line <a class="el" href="_fault_8h_source.html#l00030">30</a> of file <a class="el" href="_fault_8h_source.html">Fault.h</a>.</p> diff --git a/docs/doxygen/html/class_gain-members.html b/docs/doxygen/html/class_gain-members.html index 347d9b2..bc1a0ae 100644 --- a/docs/doxygen/html/class_gain-members.html +++ b/docs/doxygen/html/class_gain-members.html @@ -200,7 +200,7 @@ $(document).ready(function(){initNavTree('class_gain.html','');}); <tr class="even"><td class="entry"><a class="el" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(double width)</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> <tr><td class="entry"><a class="el" href="class_gain.html#a6b98027cbf545302867ad75f7ab84b93">ShowForm</a>(wxWindow *parent, Element *element)</td><td class="entry"><a class="el" href="class_gain.html">Gain</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> <tr class="even"><td class="entry"><a class="el" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>(bool showPickbox=true)</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>Solve</b>(double input, double timeStep) (defined in <a class="el" href="class_gain.html">Gain</a>)</td><td class="entry"><a class="el" href="class_gain.html">Gain</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_gain.html#a282cab6d339aa89a35c775bbea2aa117">Solve</a>(double input, double timeStep)</td><td class="entry"><a class="el" href="class_gain.html">Gain</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> <tr class="even"><td class="entry"><a class="el" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(wxPoint2DDouble position)</td><td class="entry"><a class="el" href="class_control_element.html">ControlElement</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> <tr><td class="entry"><a class="el" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(double value, int minDecimal=1)</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">static</span></td></tr> <tr class="even"><td class="entry"><a class="el" href="class_element.html#a499c3b52be27d2bf436a13b6f5353b9c">UpdateNodes</a>()</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr> diff --git a/docs/doxygen/html/class_gain.html b/docs/doxygen/html/class_gain.html index 4dd5e4f..65c0902 100644 --- a/docs/doxygen/html/class_gain.html +++ b/docs/doxygen/html/class_gain.html @@ -93,7 +93,7 @@ $(document).ready(function(){initNavTree('class_gain.html','');}); </div><!--header--> <div class="contents"> -<p>Provide an output multiplying the input by a constant. \( output = K \cdot input \). +<p>Provide an output multiplying the input by a constant. <a href="class_gain.html#details">More...</a></p> <p><code>#include <<a class="el" href="_gain_8h_source.html">Gain.h</a>></code></p> @@ -104,7 +104,7 @@ Inheritance diagram for Gain:</div> <img src="class_gain.png" usemap="#Gain_map" alt=""/> <map id="Gain_map" name="Gain_map"> <area href="class_control_element.html" alt="ControlElement" shape="rect" coords="0,56,97,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,97,24"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,97,24"/> </map> </div></div> <table class="memberdecls"> @@ -143,8 +143,8 @@ virtual double </td><td class="memItemRight" valign="bottom"><b>GetValue</b <tr class="memitem:a9930247d3cee160ac2ae815ad865f077"><td class="memItemLeft" align="right" valign="top"><a id="a9930247d3cee160ac2ae815ad865f077"></a> virtual void </td><td class="memItemRight" valign="bottom"><b>UpdatePoints</b> ()</td></tr> <tr class="separator:a9930247d3cee160ac2ae815ad865f077"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a282cab6d339aa89a35c775bbea2aa117"><td class="memItemLeft" align="right" valign="top"><a id="a282cab6d339aa89a35c775bbea2aa117"></a> -virtual bool </td><td class="memItemRight" valign="bottom"><b>Solve</b> (double input, double timeStep)</td></tr> +<tr class="memitem:a282cab6d339aa89a35c775bbea2aa117"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_gain.html#a282cab6d339aa89a35c775bbea2aa117">Solve</a> (double input, double timeStep)</td></tr> +<tr class="memdesc:a282cab6d339aa89a35c775bbea2aa117"><td class="mdescLeft"> </td><td class="mdescRight">Multiply the input by a constant. <a href="#a282cab6d339aa89a35c775bbea2aa117">More...</a><br /></td></tr> <tr class="separator:a282cab6d339aa89a35c775bbea2aa117"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a489572e289935d7256c037af682b9351"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_element.html">Element</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_gain.html#a489572e289935d7256c037af682b9351">GetCopy</a> ()</td></tr> <tr class="memdesc:a489572e289935d7256c037af682b9351"><td class="mdescLeft"> </td><td class="mdescRight">Get a the element copy. <a href="#a489572e289935d7256c037af682b9351">More...</a><br /></td></tr> @@ -482,11 +482,11 @@ Additional Inherited Members</h2></td></tr> <tr class="separator:abb2e253ec1e86353cd7160209c96553c inherit pub_static_methods_class_element"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><p>Provide an output multiplying the input by a constant. \( output = K \cdot input \). </p> +<div class="textblock"><p>Provide an output multiplying the input by a constant. </p> <dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> <dl class="section date"><dt>Date</dt><dd>05/10/2017 </dd></dl> -<p class="definition">Definition at line <a class="el" href="_gain_8h_source.html#l00036">36</a> of file <a class="el" href="_gain_8h_source.html">Gain.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_gain_8h_source.html#l00035">35</a> of file <a class="el" href="_gain_8h_source.html">Gain.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a9d80d49f5123cf4859bf15a251e3923f"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9d80d49f5123cf4859bf15a251e3923f">◆ </a></span>Contains()</h2> @@ -522,7 +522,7 @@ Additional Inherited Members</h2></td></tr> <p>Implements <a class="el" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_gain_8h_source.html#l00043">43</a> of file <a class="el" href="_gain_8h_source.html">Gain.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_gain_8h_source.html#l00042">42</a> of file <a class="el" href="_gain_8h_source.html">Gain.h</a>.</p> </div> </div> @@ -641,7 +641,7 @@ Additional Inherited Members</h2></td></tr> <p>Implements <a class="el" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_gain_8h_source.html#l00044">44</a> of file <a class="el" href="_gain_8h_source.html">Gain.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_gain_8h_source.html#l00043">43</a> of file <a class="el" href="_gain_8h_source.html">Gain.h</a>.</p> </div> </div> @@ -759,7 +759,7 @@ Additional Inherited Members</h2></td></tr> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> @@ -771,6 +771,56 @@ Additional Inherited Members</h2></td></tr> </div> </div> +<a id="a282cab6d339aa89a35c775bbea2aa117"></a> +<h2 class="memtitle"><span class="permalink"><a href="#a282cab6d339aa89a35c775bbea2aa117">◆ </a></span>Solve()</h2> + +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">bool Gain::Solve </td> + <td>(</td> + <td class="paramtype">double </td> + <td class="paramname"><em>input</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">double </td> + <td class="paramname"><em>timeStep</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Multiply the input by a constant. </p> +<center> \( output = K \cdot input \)</center> <dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">input</td><td>Input value. </td></tr> + <tr><td class="paramname">timeStep</td><td>Time step. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>Always true. </dd></dl> + +<p>Reimplemented from <a class="el" href="class_control_element.html">ControlElement</a>.</p> + +<p class="definition">Definition at line <a class="el" href="_gain_8cpp_source.html#l00188">188</a> of file <a class="el" href="_gain_8cpp_source.html">Gain.cpp</a>.</p> + +</div> +</div> <hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_gain_8h_source.html">Gain.h</a></li> <li>Project/<a class="el" href="_gain_8cpp_source.html">Gain.cpp</a></li> diff --git a/docs/doxygen/html/class_graphical_element.html b/docs/doxygen/html/class_graphical_element.html index 119dc75..beaa2e3 100644 --- a/docs/doxygen/html/class_graphical_element.html +++ b/docs/doxygen/html/class_graphical_element.html @@ -90,14 +90,19 @@ $(document).ready(function(){initNavTree('class_graphical_element.html','');}); <div class="title">GraphicalElement Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Abstract class for graphical elements shown with power elements in workspace. + <a href="class_graphical_element.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_graphical_element_8h_source.html">GraphicalElement.h</a>></code></p> <div class="dynheader"> Inheritance diagram for GraphicalElement:</div> <div class="dyncontent"> <div class="center"> <img src="class_graphical_element.png" usemap="#GraphicalElement_map" alt=""/> <map id="GraphicalElement_map" name="GraphicalElement_map"> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,111,24"/> -<area href="class_text.html" alt="Text" shape="rect" coords="0,112,111,136"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,111,24"/> +<area href="class_text.html" title="Element that shows power element informations in workspace. " alt="Text" shape="rect" coords="0,112,111,136"/> </map> </div></div> <table class="memberdecls"> @@ -401,8 +406,11 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <tr class="separator:ab0df145138fef6ed901ff4b1828439b0 inherit pro_attribs_class_element"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_graphical_element_8h_source.html#l00023">23</a> of file <a class="el" href="_graphical_element_8h_source.html">GraphicalElement.h</a>.</p> +<div class="textblock"><p>Abstract class for graphical elements shown with power elements in workspace. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_graphical_element_8h_source.html#l00030">30</a> of file <a class="el" href="_graphical_element_8h_source.html">GraphicalElement.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_graphical_element_8h_source.html">GraphicalElement.h</a></li> <li>Project/<a class="el" href="_graphical_element_8cpp_source.html">GraphicalElement.cpp</a></li> diff --git a/docs/doxygen/html/class_i_o_control.html b/docs/doxygen/html/class_i_o_control.html index e2ebe66..2d4052a 100644 --- a/docs/doxygen/html/class_i_o_control.html +++ b/docs/doxygen/html/class_i_o_control.html @@ -105,7 +105,7 @@ Inheritance diagram for IOControl:</div> <img src="class_i_o_control.png" usemap="#IOControl_map" alt=""/> <map id="IOControl_map" name="IOControl_map"> <area href="class_control_element.html" alt="ControlElement" shape="rect" coords="0,56,97,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,97,24"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,97,24"/> </map> </div></div> <table class="memberdecls"> @@ -748,7 +748,7 @@ Additional Inherited Members</h2></td></tr> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/class_ind_motor.html b/docs/doxygen/html/class_ind_motor.html index 0d80395..65ee739 100644 --- a/docs/doxygen/html/class_ind_motor.html +++ b/docs/doxygen/html/class_ind_motor.html @@ -92,15 +92,20 @@ $(document).ready(function(){initNavTree('class_ind_motor.html','');}); <div class="title">IndMotor Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Induction motor power element. + <a href="class_ind_motor.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_ind_motor_8h_source.html">IndMotor.h</a>></code></p> <div class="dynheader"> Inheritance diagram for IndMotor:</div> <div class="dyncontent"> <div class="center"> <img src="class_ind_motor.png" usemap="#IndMotor_map" alt=""/> <map id="IndMotor_map" name="IndMotor_map"> -<area href="class_machines.html" alt="Machines" shape="rect" coords="0,112,92,136"/> -<area href="class_power_element.html" alt="PowerElement" shape="rect" coords="0,56,92,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,92,24"/> +<area href="class_machines.html" title="Abstract class for rotary machines power elements. " alt="Machines" shape="rect" coords="0,112,92,136"/> +<area href="class_power_element.html" title="Abstract class of power elements. " alt="PowerElement" shape="rect" coords="0,56,92,80"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,92,24"/> </map> </div></div> <table class="memberdecls"> @@ -542,8 +547,11 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <tr class="separator:a489713cc909f0d733107dad72160f434 inherit pro_methods_class_machines"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_ind_motor_8h_source.html#l00033">33</a> of file <a class="el" href="_ind_motor_8h_source.html">IndMotor.h</a>.</p> +<div class="textblock"><p>Induction motor power element. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_ind_motor_8h_source.html#l00040">40</a> of file <a class="el" href="_ind_motor_8h_source.html">IndMotor.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a87666565ae1380993d94e7886e9a1f59"></a> <h2 class="memtitle"><span class="permalink"><a href="#a87666565ae1380993d94e7886e9a1f59">◆ </a></span>GetContextMenu()</h2> @@ -686,7 +694,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/class_inductor.html b/docs/doxygen/html/class_inductor.html index f80de12..8221ac3 100644 --- a/docs/doxygen/html/class_inductor.html +++ b/docs/doxygen/html/class_inductor.html @@ -92,15 +92,20 @@ $(document).ready(function(){initNavTree('class_inductor.html','');}); <div class="title">Inductor Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p><a class="el" href="class_inductor.html" title="Inductor shunt power element. ">Inductor</a> shunt power element. + <a href="class_inductor.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_inductor_8h_source.html">Inductor.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Inductor:</div> <div class="dyncontent"> <div class="center"> <img src="class_inductor.png" usemap="#Inductor_map" alt=""/> <map id="Inductor_map" name="Inductor_map"> -<area href="class_shunt.html" alt="Shunt" shape="rect" coords="0,112,92,136"/> -<area href="class_power_element.html" alt="PowerElement" shape="rect" coords="0,56,92,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,92,24"/> +<area href="class_shunt.html" title="Abstract class for shunt power elements. " alt="Shunt" shape="rect" coords="0,112,92,136"/> +<area href="class_power_element.html" title="Abstract class of power elements. " alt="PowerElement" shape="rect" coords="0,56,92,80"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,92,24"/> </map> </div></div> <table class="memberdecls"> @@ -531,8 +536,11 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <tr class="separator:a902525eebbb4bf3ecaab0e1e60b6f017 inherit pro_methods_class_shunt"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_inductor_8h_source.html#l00031">31</a> of file <a class="el" href="_inductor_8h_source.html">Inductor.h</a>.</p> +<div class="textblock"><p><a class="el" href="class_inductor.html" title="Inductor shunt power element. ">Inductor</a> shunt power element. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_inductor_8h_source.html#l00038">38</a> of file <a class="el" href="_inductor_8h_source.html">Inductor.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a4e404c6e15f206fe0f5de06fc19dedf5"></a> <h2 class="memtitle"><span class="permalink"><a href="#a4e404c6e15f206fe0f5de06fc19dedf5">◆ </a></span>AddParent()</h2> @@ -571,7 +579,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Add a parent to the element. This method must be used on power elements that connect to a bus, so the parent must be a bus. The element basic points are calculated in this method, so apply this when the element is being inserted. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html">Element</a> parent. </td></tr> + <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> parent. </td></tr> <tr><td class="paramname">position</td><td><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> position in the parent. </td></tr> </table> </dd> @@ -887,7 +895,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/class_limiter.html b/docs/doxygen/html/class_limiter.html index ab00761..38380a9 100644 --- a/docs/doxygen/html/class_limiter.html +++ b/docs/doxygen/html/class_limiter.html @@ -104,7 +104,7 @@ Inheritance diagram for Limiter:</div> <img src="class_limiter.png" usemap="#Limiter_map" alt=""/> <map id="Limiter_map" name="Limiter_map"> <area href="class_control_element.html" alt="ControlElement" shape="rect" coords="0,56,97,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,97,24"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,97,24"/> </map> </div></div> <table class="memberdecls"> @@ -721,7 +721,7 @@ Additional Inherited Members</h2></td></tr> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/class_line.html b/docs/doxygen/html/class_line.html index f389522..4c05074 100644 --- a/docs/doxygen/html/class_line.html +++ b/docs/doxygen/html/class_line.html @@ -93,15 +93,20 @@ $(document).ready(function(){initNavTree('class_line.html','');}); <div class="title">Line Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Power line element. + <a href="class_line.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_line_8h_source.html">Line.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Line:</div> <div class="dyncontent"> <div class="center"> <img src="class_line.png" usemap="#Line_map" alt=""/> <map id="Line_map" name="Line_map"> -<area href="class_branch.html" alt="Branch" shape="rect" coords="0,112,92,136"/> -<area href="class_power_element.html" alt="PowerElement" shape="rect" coords="0,56,92,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,92,24"/> +<area href="class_branch.html" title="Abstract class for branch power elements. " alt="Branch" shape="rect" coords="0,112,92,136"/> +<area href="class_power_element.html" title="Abstract class of power elements. " alt="PowerElement" shape="rect" coords="0,56,92,80"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,92,24"/> </map> </div></div> <table class="memberdecls"> @@ -537,8 +542,11 @@ Additional Inherited Members</h2></td></tr> <tr class="separator:abb2e253ec1e86353cd7160209c96553c inherit pub_static_methods_class_element"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_line_8h_source.html#l00052">52</a> of file <a class="el" href="_line_8h_source.html">Line.h</a>.</p> +<div class="textblock"><p>Power line element. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_line_8h_source.html#l00059">59</a> of file <a class="el" href="_line_8h_source.html">Line.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a26c69f7f703dca718edc28d5093934a3"></a> <h2 class="memtitle"><span class="permalink"><a href="#a26c69f7f703dca718edc28d5093934a3">◆ </a></span>AddParent()</h2> @@ -577,7 +585,7 @@ Additional Inherited Members</h2></td></tr> <p>Add a parent to the element. This method must be used on power elements that connect to a bus, so the parent must be a bus. The element basic points are calculated in this method, so apply this when the element is being inserted. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html">Element</a> parent. </td></tr> + <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> parent. </td></tr> <tr><td class="paramname">position</td><td><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> position in the parent. </td></tr> </table> </dd> @@ -791,7 +799,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_branch.html#a62418f767cc9bb894d6b7cc73645e43e">Branch</a>.</p> -<p class="definition">Definition at line <a class="el" href="_line_8h_source.html#l00064">64</a> of file <a class="el" href="_line_8h_source.html">Line.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_line_8h_source.html#l00071">71</a> of file <a class="el" href="_line_8h_source.html">Line.h</a>.</p> </div> </div> @@ -1351,7 +1359,7 @@ Additional Inherited Members</h2></td></tr> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/class_load.html b/docs/doxygen/html/class_load.html index 9c5c62d..b7d6d9c 100644 --- a/docs/doxygen/html/class_load.html +++ b/docs/doxygen/html/class_load.html @@ -92,15 +92,20 @@ $(document).ready(function(){initNavTree('class_load.html','');}); <div class="title">Load Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Loas shunt power element. + <a href="class_load.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_load_8h_source.html">Load.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Load:</div> <div class="dyncontent"> <div class="center"> <img src="class_load.png" usemap="#Load_map" alt=""/> <map id="Load_map" name="Load_map"> -<area href="class_shunt.html" alt="Shunt" shape="rect" coords="0,112,92,136"/> -<area href="class_power_element.html" alt="PowerElement" shape="rect" coords="0,56,92,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,92,24"/> +<area href="class_shunt.html" title="Abstract class for shunt power elements. " alt="Shunt" shape="rect" coords="0,112,92,136"/> +<area href="class_power_element.html" title="Abstract class of power elements. " alt="PowerElement" shape="rect" coords="0,56,92,80"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,92,24"/> </map> </div></div> <table class="memberdecls"> @@ -534,8 +539,11 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <tr class="separator:a902525eebbb4bf3ecaab0e1e60b6f017 inherit pro_methods_class_shunt"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_load_8h_source.html#l00035">35</a> of file <a class="el" href="_load_8h_source.html">Load.h</a>.</p> +<div class="textblock"><p>Loas shunt power element. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_load_8h_source.html#l00042">42</a> of file <a class="el" href="_load_8h_source.html">Load.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="ac9f449be9b919b36924a844324bf37ee"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac9f449be9b919b36924a844324bf37ee">◆ </a></span>AddParent()</h2> @@ -574,7 +582,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <p>Add a parent to the element. This method must be used on power elements that connect to a bus, so the parent must be a bus. The element basic points are calculated in this method, so apply this when the element is being inserted. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html">Element</a> parent. </td></tr> + <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> parent. </td></tr> <tr><td class="paramname">position</td><td><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> position in the parent. </td></tr> </table> </dd> @@ -814,7 +822,7 @@ void </td><td class="memItemRight" valign="bottom"><b>DrawGround</b> (wxPoi <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/class_machines.html b/docs/doxygen/html/class_machines.html index fca9c4c..0ca2bf4 100644 --- a/docs/doxygen/html/class_machines.html +++ b/docs/doxygen/html/class_machines.html @@ -94,17 +94,22 @@ $(document).ready(function(){initNavTree('class_machines.html','');}); <div class="title">Machines Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Abstract class for rotary machines power elements. + <a href="class_machines.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_machines_8h_source.html">Machines.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Machines:</div> <div class="dyncontent"> <div class="center"> <img src="class_machines.png" usemap="#Machines_map" alt=""/> <map id="Machines_map" name="Machines_map"> -<area href="class_power_element.html" alt="PowerElement" shape="rect" coords="108,56,206,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="108,0,206,24"/> -<area href="class_ind_motor.html" alt="IndMotor" shape="rect" coords="0,168,98,192"/> -<area href="class_sync_generator.html" alt="SyncGenerator" shape="rect" coords="108,168,206,192"/> -<area href="class_sync_motor.html" alt="SyncMotor" shape="rect" coords="216,168,314,192"/> +<area href="class_power_element.html" title="Abstract class of power elements. " alt="PowerElement" shape="rect" coords="108,56,206,80"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="108,0,206,24"/> +<area href="class_ind_motor.html" title="Induction motor power element. " alt="IndMotor" shape="rect" coords="0,168,98,192"/> +<area href="class_sync_generator.html" title="Synchronous generator power element. " alt="SyncGenerator" shape="rect" coords="108,168,206,192"/> +<area href="class_sync_motor.html" title="Synchronous motor (synchronous compensator) power element. " alt="SyncMotor" shape="rect" coords="216,168,314,192"/> </map> </div></div> <table class="memberdecls"> @@ -533,8 +538,11 @@ Additional Inherited Members</h2></td></tr> <tr class="separator:abb2e253ec1e86353cd7160209c96553c inherit pub_static_methods_class_element"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_machines_8h_source.html#l00026">26</a> of file <a class="el" href="_machines_8h_source.html">Machines.h</a>.</p> +<div class="textblock"><p>Abstract class for rotary machines power elements. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_machines_8h_source.html#l00033">33</a> of file <a class="el" href="_machines_8h_source.html">Machines.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="aaaf1b86dcbfd8f4a4c082a77d72b1fe3"></a> <h2 class="memtitle"><span class="permalink"><a href="#aaaf1b86dcbfd8f4a4c082a77d72b1fe3">◆ </a></span>AddParent()</h2> @@ -573,7 +581,7 @@ Additional Inherited Members</h2></td></tr> <p>Add a parent to the element. This method must be used on power elements that connect to a bus, so the parent must be a bus. The element basic points are calculated in this method, so apply this when the element is being inserted. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html">Element</a> parent. </td></tr> + <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> parent. </td></tr> <tr><td class="paramname">position</td><td><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> position in the parent. </td></tr> </table> </dd> @@ -619,7 +627,7 @@ Additional Inherited Members</h2></td></tr> <p>Implements <a class="el" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_machines_8h_source.html#l00035">35</a> of file <a class="el" href="_machines_8h_source.html">Machines.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_machines_8h_source.html#l00042">42</a> of file <a class="el" href="_machines_8h_source.html">Machines.h</a>.</p> </div> </div> @@ -706,7 +714,7 @@ Additional Inherited Members</h2></td></tr> <p>Implements <a class="el" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_machines_8h_source.html#l00037">37</a> of file <a class="el" href="_machines_8h_source.html">Machines.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_machines_8h_source.html#l00044">44</a> of file <a class="el" href="_machines_8h_source.html">Machines.h</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_multiplier.html b/docs/doxygen/html/class_multiplier.html index 2aa50e8..08a681b 100644 --- a/docs/doxygen/html/class_multiplier.html +++ b/docs/doxygen/html/class_multiplier.html @@ -103,7 +103,7 @@ Inheritance diagram for Multiplier:</div> <img src="class_multiplier.png" usemap="#Multiplier_map" alt=""/> <map id="Multiplier_map" name="Multiplier_map"> <area href="class_control_element.html" alt="ControlElement" shape="rect" coords="0,56,97,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,97,24"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,97,24"/> </map> </div></div> <table class="memberdecls"> @@ -699,7 +699,7 @@ bool </td><td class="memItemRight" valign="bottom"><b>m_online</b> = true</ <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/class_open_g_l_colour.html b/docs/doxygen/html/class_open_g_l_colour.html index 33d35bd..5303ea4 100644 --- a/docs/doxygen/html/class_open_g_l_colour.html +++ b/docs/doxygen/html/class_open_g_l_colour.html @@ -93,6 +93,9 @@ $(document).ready(function(){initNavTree('class_open_g_l_colour.html','');}); </div><!--header--> <div class="contents"> +<p>Class to manage color of OpenGL. + <a href="class_open_g_l_colour.html#details">More...</a></p> + <p><code>#include <<a class="el" href="_element_8h_source.html">Element.h</a>></code></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> @@ -122,7 +125,8 @@ GLdouble </td><td class="memItemRight" valign="bottom"><b>rgba</b> [4]</td> <tr class="separator:a8a1d6bdf3bc1b26f040e7a3b45dd85e7"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira </dd></dl> +<div class="textblock"><p>Class to manage color of OpenGL. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira </dd></dl> <dl class="section date"><dt>Date</dt><dd>18/01/2017 </dd></dl> <p class="definition">Definition at line <a class="el" href="_element_8h_source.html#l00067">67</a> of file <a class="el" href="_element_8h_source.html">Element.h</a>.</p> diff --git a/docs/doxygen/html/class_plot_data.html b/docs/doxygen/html/class_plot_data.html index adfb181..90ee9bb 100644 --- a/docs/doxygen/html/class_plot_data.html +++ b/docs/doxygen/html/class_plot_data.html @@ -92,6 +92,11 @@ $(document).ready(function(){initNavTree('class_plot_data.html','');}); <div class="title">PlotData Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>This class is responsible to manage the graphical data of electromechanical result to be plotted on chart viewer. + <a href="class_plot_data.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_element_plot_data_8h_source.html">ElementPlotData.h</a>></code></p> <div class="dynheader"> Inheritance diagram for PlotData:</div> <div class="dyncontent"> @@ -171,8 +176,11 @@ int </td><td class="memItemRight" valign="bottom"><b>m_axis</b></td></tr> <tr class="separator:a19d3ba5b243c0b3a0ae29deb853fa468"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_element_plot_data_8h_source.html#l00027">27</a> of file <a class="el" href="_element_plot_data_8h_source.html">ElementPlotData.h</a>.</p> +<div class="textblock"><p>This class is responsible to manage the graphical data of electromechanical result to be plotted on chart viewer. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_element_plot_data_8h_source.html#l00035">35</a> of file <a class="el" href="_element_plot_data_8h_source.html">ElementPlotData.h</a>.</p> </div><hr/>The documentation for this class was generated from the following file:<ul> <li>Project/<a class="el" href="_element_plot_data_8h_source.html">ElementPlotData.h</a></li> </ul> diff --git a/docs/doxygen/html/class_power_element.html b/docs/doxygen/html/class_power_element.html index 2a3d755..dc61c46 100644 --- a/docs/doxygen/html/class_power_element.html +++ b/docs/doxygen/html/class_power_element.html @@ -93,6 +93,9 @@ $(document).ready(function(){initNavTree('class_power_element.html','');}); </div><!--header--> <div class="contents"> +<p>Abstract class of power elements. + <a href="class_power_element.html#details">More...</a></p> + <p><code>#include <<a class="el" href="_power_element_8h_source.html">PowerElement.h</a>></code></p> <div class="dynheader"> Inheritance diagram for PowerElement:</div> @@ -100,19 +103,19 @@ Inheritance diagram for PowerElement:</div> <div class="center"> <img src="class_power_element.png" usemap="#PowerElement_map" alt=""/> <map id="PowerElement_map" name="PowerElement_map"> -<area href="class_element.html" alt="Element" shape="rect" coords="162,0,260,24"/> -<area href="class_branch.html" alt="Branch" shape="rect" coords="0,112,98,136"/> -<area href="class_bus.html" alt="Bus" shape="rect" coords="108,112,206,136"/> -<area href="class_machines.html" alt="Machines" shape="rect" coords="216,112,314,136"/> -<area href="class_shunt.html" alt="Shunt" shape="rect" coords="432,112,530,136"/> -<area href="class_line.html" alt="Line" shape="rect" coords="108,168,206,192"/> -<area href="class_transformer.html" alt="Transformer" shape="rect" coords="108,224,206,248"/> -<area href="class_ind_motor.html" alt="IndMotor" shape="rect" coords="324,168,422,192"/> -<area href="class_sync_generator.html" alt="SyncGenerator" shape="rect" coords="324,224,422,248"/> -<area href="class_sync_motor.html" alt="SyncMotor" shape="rect" coords="324,280,422,304"/> -<area href="class_capacitor.html" alt="Capacitor" shape="rect" coords="540,168,638,192"/> -<area href="class_inductor.html" alt="Inductor" shape="rect" coords="540,224,638,248"/> -<area href="class_load.html" alt="Load" shape="rect" coords="540,280,638,304"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="162,0,260,24"/> +<area href="class_branch.html" title="Abstract class for branch power elements. " alt="Branch" shape="rect" coords="0,112,98,136"/> +<area href="class_bus.html" title="Node for power elements. All others power elements are connected through this. " alt="Bus" shape="rect" coords="108,112,206,136"/> +<area href="class_machines.html" title="Abstract class for rotary machines power elements. " alt="Machines" shape="rect" coords="216,112,314,136"/> +<area href="class_shunt.html" title="Abstract class for shunt power elements. " alt="Shunt" shape="rect" coords="432,112,530,136"/> +<area href="class_line.html" title="Power line element. " alt="Line" shape="rect" coords="108,168,206,192"/> +<area href="class_transformer.html" title="Two-winding transformer power element. " alt="Transformer" shape="rect" coords="108,224,206,248"/> +<area href="class_ind_motor.html" title="Induction motor power element. " alt="IndMotor" shape="rect" coords="324,168,422,192"/> +<area href="class_sync_generator.html" title="Synchronous generator power element. " alt="SyncGenerator" shape="rect" coords="324,224,422,248"/> +<area href="class_sync_motor.html" title="Synchronous motor (synchronous compensator) power element. " alt="SyncMotor" shape="rect" coords="324,280,422,304"/> +<area href="class_capacitor.html" title="Shunt capactior power element. " alt="Capacitor" shape="rect" coords="540,168,638,192"/> +<area href="class_inductor.html" title="Inductor shunt power element. " alt="Inductor" shape="rect" coords="540,224,638,248"/> +<area href="class_load.html" title="Loas shunt power element. " alt="Load" shape="rect" coords="540,280,638,304"/> </map> </div></div> <table class="memberdecls"> @@ -511,7 +514,8 @@ Additional Inherited Members</h2></td></tr> <tr class="separator:abb2e253ec1e86353cd7160209c96553c inherit pub_static_methods_class_element"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira </dd></dl> +<div class="textblock"><p>Abstract class of power elements. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> <dl class="section date"><dt>Date</dt><dd>18/01/2017 </dd></dl> <p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00117">117</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> @@ -645,7 +649,7 @@ Additional Inherited Members</h2></td></tr> </div><div class="memdoc"> <p>Returns the switching data of the element. </p> -<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_element.html">Element</a> switching data. </dd></dl> +<dl class="section return"><dt>Returns</dt><dd><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> switching data. </dd></dl> <p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00182">182</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> @@ -694,7 +698,7 @@ Additional Inherited Members</h2></td></tr> <p>Get the correct switch position. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_bus.html">Bus</a> with switch. </td></tr> + <tr><td class="paramname">parent</td><td><a class="el" href="class_bus.html" title="Node for power elements. All others power elements are connected through this. ">Bus</a> with switch. </td></tr> <tr><td class="paramname">parentPoint</td><td>Position of node on parent. </td></tr> <tr><td class="paramname">secondPoint</td><td>Next point in element. </td></tr> </table> diff --git a/docs/doxygen/html/class_power_flow.html b/docs/doxygen/html/class_power_flow.html index 768aee7..ce7443d 100644 --- a/docs/doxygen/html/class_power_flow.html +++ b/docs/doxygen/html/class_power_flow.html @@ -92,13 +92,18 @@ $(document).ready(function(){initNavTree('class_power_flow.html','');}); <div class="title">PowerFlow Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Calculate the power flow. + <a href="class_power_flow.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_power_flow_8h_source.html">PowerFlow.h</a>></code></p> <div class="dynheader"> Inheritance diagram for PowerFlow:</div> <div class="dyncontent"> <div class="center"> <img src="class_power_flow.png" usemap="#PowerFlow_map" alt=""/> <map id="PowerFlow_map" name="PowerFlow_map"> -<area href="class_electric_calculation.html" alt="ElectricCalculation" shape="rect" coords="0,0,118,24"/> +<area href="class_electric_calculation.html" title="Base class of electric calculations, with general methods. " alt="ElectricCalculation" shape="rect" coords="0,0,118,24"/> </map> </div></div> <table class="memberdecls"> @@ -224,8 +229,11 @@ std::vector< <a class="el" href="class_transformer.html">Transformer</a> * &g <tr class="separator:a6cca6be3c0b79741a49b1631e38fc3be inherit pro_attribs_class_electric_calculation"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_power_flow_8h_source.html#l00026">26</a> of file <a class="el" href="_power_flow_8h_source.html">PowerFlow.h</a>.</p> +<div class="textblock"><p>Calculate the power flow. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_power_flow_8h_source.html#l00033">33</a> of file <a class="el" href="_power_flow_8h_source.html">PowerFlow.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_power_flow_8h_source.html">PowerFlow.h</a></li> <li>Project/<a class="el" href="_power_flow_8cpp_source.html">PowerFlow.cpp</a></li> diff --git a/docs/doxygen/html/class_properties_data.html b/docs/doxygen/html/class_properties_data.html index 9b79392..23b78fe 100644 --- a/docs/doxygen/html/class_properties_data.html +++ b/docs/doxygen/html/class_properties_data.html @@ -92,6 +92,11 @@ $(document).ready(function(){initNavTree('class_properties_data.html','');}); <div class="title">PropertiesData Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>General and simulation data manager. + <a href="class_properties_data.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_properties_data_8h_source.html">PropertiesData.h</a>></code></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> Public Member Functions</h2></td></tr> @@ -118,8 +123,11 @@ Protected Attributes</h2></td></tr> <tr class="separator:a9f7f7faa69ce057afa6b59f722c7ccab"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_properties_data_8h_source.html#l00057">57</a> of file <a class="el" href="_properties_data_8h_source.html">PropertiesData.h</a>.</p> +<div class="textblock"><p>General and simulation data manager. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_properties_data_8h_source.html#l00064">64</a> of file <a class="el" href="_properties_data_8h_source.html">PropertiesData.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_properties_data_8h_source.html">PropertiesData.h</a></li> <li>Project/<a class="el" href="_properties_data_8cpp_source.html">PropertiesData.cpp</a></li> diff --git a/docs/doxygen/html/class_rate_limiter.html b/docs/doxygen/html/class_rate_limiter.html index 5811c2e..d308a81 100644 --- a/docs/doxygen/html/class_rate_limiter.html +++ b/docs/doxygen/html/class_rate_limiter.html @@ -105,7 +105,7 @@ Inheritance diagram for RateLimiter:</div> <img src="class_rate_limiter.png" usemap="#RateLimiter_map" alt=""/> <map id="RateLimiter_map" name="RateLimiter_map"> <area href="class_control_element.html" alt="ControlElement" shape="rect" coords="0,56,97,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,97,24"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,97,24"/> </map> </div></div> <table class="memberdecls"> @@ -146,22 +146,7 @@ void </td><td class="memItemRight" valign="bottom"><b>SetLowLimit</b> (doub <tr class="separator:ac9e938191a9cb73f2062424bb7ef3d6a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2697e0f56b574739651fa2126b315e29"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">Solve</a> (double input, double timeStep)</td></tr> <tr class="memdesc:a2697e0f56b574739651fa2126b315e29"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the rate and limits it if exceeds.<br /> - The rate is calculated by:<br /> -<br /> - \( rate = \frac{x(i) - y(i-1)}{\Delta t} \)<br /> -<br /> - \( x(i) \) is the current input and \( y(i-1) \) is the previous output.<br /> - If the \(rate\) is greater than rising rate ( \( R \)), the output will be:<br /> -<br /> - \( output = \Delta t \cdot R + y(i-1)\)<br /> -<br /> - If the \(rate\) is lower than falling rate ( \( F \)), the output will be:<br /> -<br /> - \( output = \Delta t \cdot L + y(i-1) \)<br /> -<br /> - Otherwise:<br /> -<br /> - \( output = input \). <a href="#a2697e0f56b574739651fa2126b315e29">More...</a><br /></td></tr> + <a href="#a2697e0f56b574739651fa2126b315e29">More...</a><br /></td></tr> <tr class="separator:a2697e0f56b574739651fa2126b315e29"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4f1152238b97fcf76a0bee258e971823"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_element.html">Element</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823">GetCopy</a> ()</td></tr> <tr class="memdesc:a4f1152238b97fcf76a0bee258e971823"><td class="mdescLeft"> </td><td class="mdescRight">Get a the element copy. <a href="#a4f1152238b97fcf76a0bee258e971823">More...</a><br /></td></tr> @@ -739,7 +724,7 @@ Additional Inherited Members</h2></td></tr> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> @@ -786,25 +771,15 @@ Additional Inherited Members</h2></td></tr> </div><div class="memdoc"> <p>Calculate the rate and limits it if exceeds.<br /> - The rate is calculated by:<br /> -<br /> - \( rate = \frac{x(i) - y(i-1)}{\Delta t} \)<br /> + </p> +<p>The rate is calculated by: </p><center> \( rate = \frac{x(i) - y(i-1)}{\Delta t} \)</center><p> Where, \( x(i) \) is the current input and \( y(i-1) \) is the previous output.<br /> <br /> - \( x(i) \) is the current input and \( y(i-1) \) is the previous output.<br /> If the \(rate\) is greater than rising rate ( \( R \)), the output will be:<br /> + </p><center> \( output = \Delta t \cdot R + y(i-1)\)</center><p> If the \(rate\) is lower than falling rate ( \( F \)), the output will be:<br /> <br /> - \( output = \Delta t \cdot R + y(i-1)\)<br /> -<br /> - If the \(rate\) is lower than falling rate ( \( F \)), the output will be:<br /> -<br /> - \( output = \Delta t \cdot L + y(i-1) \)<br /> -<br /> - Otherwise:<br /> -<br /> - \( output = input \). </p> -<dl class="params"><dt>Parameters</dt><dd> + </p><center> \( output = \Delta t \cdot F + y(i-1) \)</center><p> Otherwise: </p><center> \( output = input \)</center><p>. </p><dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">input</td><td>input value. </td></tr> + <tr><td class="paramname">input</td><td>Input value. </td></tr> <tr><td class="paramname">timeStep</td><td>Time step. </td></tr> </table> </dd> diff --git a/docs/doxygen/html/class_shunt.html b/docs/doxygen/html/class_shunt.html index 65074b3..2fb1cae 100644 --- a/docs/doxygen/html/class_shunt.html +++ b/docs/doxygen/html/class_shunt.html @@ -93,17 +93,22 @@ $(document).ready(function(){initNavTree('class_shunt.html','');}); <div class="title">Shunt Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Abstract class for shunt power elements. + <a href="class_shunt.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_shunt_8h_source.html">Shunt.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Shunt:</div> <div class="dyncontent"> <div class="center"> <img src="class_shunt.png" usemap="#Shunt_map" alt=""/> <map id="Shunt_map" name="Shunt_map"> -<area href="class_power_element.html" alt="PowerElement" shape="rect" coords="102,56,194,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="102,0,194,24"/> -<area href="class_capacitor.html" alt="Capacitor" shape="rect" coords="0,168,92,192"/> -<area href="class_inductor.html" alt="Inductor" shape="rect" coords="102,168,194,192"/> -<area href="class_load.html" alt="Load" shape="rect" coords="204,168,296,192"/> +<area href="class_power_element.html" title="Abstract class of power elements. " alt="PowerElement" shape="rect" coords="102,56,194,80"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="102,0,194,24"/> +<area href="class_capacitor.html" title="Shunt capactior power element. " alt="Capacitor" shape="rect" coords="0,168,92,192"/> +<area href="class_inductor.html" title="Inductor shunt power element. " alt="Inductor" shape="rect" coords="102,168,194,192"/> +<area href="class_load.html" title="Loas shunt power element. " alt="Load" shape="rect" coords="204,168,296,192"/> </map> </div></div> <table class="memberdecls"> @@ -519,8 +524,11 @@ Additional Inherited Members</h2></td></tr> <tr class="separator:abb2e253ec1e86353cd7160209c96553c inherit pub_static_methods_class_element"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_shunt_8h_source.html#l00024">24</a> of file <a class="el" href="_shunt_8h_source.html">Shunt.h</a>.</p> +<div class="textblock"><p>Abstract class for shunt power elements. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_shunt_8h_source.html#l00031">31</a> of file <a class="el" href="_shunt_8h_source.html">Shunt.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a449431a2044b838d35cbb991aa1de658"></a> <h2 class="memtitle"><span class="permalink"><a href="#a449431a2044b838d35cbb991aa1de658">◆ </a></span>Contains()</h2> @@ -558,7 +566,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_capacitor.html#a994039e59a8ae0ec3fe7cf7f5b66e4e5">Capacitor</a>, and <a class="el" href="class_inductor.html#ac3ba7de94a328b20ff86e968a6228f60">Inductor</a>.</p> -<p class="definition">Definition at line <a class="el" href="_shunt_8h_source.html#l00030">30</a> of file <a class="el" href="_shunt_8h_source.html">Shunt.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_shunt_8h_source.html#l00037">37</a> of file <a class="el" href="_shunt_8h_source.html">Shunt.h</a>.</p> </div> </div> @@ -598,7 +606,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented in <a class="el" href="class_capacitor.html#a6b06adb1ef3545b220e0b94ee6210b7a">Capacitor</a>, and <a class="el" href="class_inductor.html#a3d331d2a725275a12489401180d4c1d1">Inductor</a>.</p> -<p class="definition">Definition at line <a class="el" href="_shunt_8h_source.html#l00031">31</a> of file <a class="el" href="_shunt_8h_source.html">Shunt.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_shunt_8h_source.html#l00038">38</a> of file <a class="el" href="_shunt_8h_source.html">Shunt.h</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_sum.html b/docs/doxygen/html/class_sum.html index 61ae547..ba2fa91 100644 --- a/docs/doxygen/html/class_sum.html +++ b/docs/doxygen/html/class_sum.html @@ -93,6 +93,11 @@ $(document).ready(function(){initNavTree('class_sum.html','');}); <div class="title">Sum Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p><a class="el" href="class_sum.html" title="Sum the all inputs (can choose the input signal). ">Sum</a> the all inputs (can choose the input signal). + <a href="class_sum.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_sum_8h_source.html">Sum.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Sum:</div> <div class="dyncontent"> @@ -100,7 +105,7 @@ Inheritance diagram for Sum:</div> <img src="class_sum.png" usemap="#Sum_map" alt=""/> <map id="Sum_map" name="Sum_map"> <area href="class_control_element.html" alt="ControlElement" shape="rect" coords="0,56,97,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,97,24"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,97,24"/> </map> </div></div> <table class="memberdecls"> @@ -482,8 +487,11 @@ Additional Inherited Members</h2></td></tr> <tr class="separator:abb2e253ec1e86353cd7160209c96553c inherit pub_static_methods_class_element"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_sum_8h_source.html#l00026">26</a> of file <a class="el" href="_sum_8h_source.html">Sum.h</a>.</p> +<div class="textblock"><p><a class="el" href="class_sum.html" title="Sum the all inputs (can choose the input signal). ">Sum</a> the all inputs (can choose the input signal). </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_sum_8h_source.html#l00033">33</a> of file <a class="el" href="_sum_8h_source.html">Sum.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a1d1b52ca1b9a81d53c0a9cf140546987"></a> <h2 class="memtitle"><span class="permalink"><a href="#a1d1b52ca1b9a81d53c0a9cf140546987">◆ </a></span>Contains()</h2> @@ -519,7 +527,7 @@ Additional Inherited Members</h2></td></tr> <p>Implements <a class="el" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sum_8h_source.html#l00034">34</a> of file <a class="el" href="_sum_8h_source.html">Sum.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sum_8h_source.html#l00041">41</a> of file <a class="el" href="_sum_8h_source.html">Sum.h</a>.</p> </div> </div> @@ -638,7 +646,7 @@ Additional Inherited Members</h2></td></tr> <p>Implements <a class="el" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_sum_8h_source.html#l00035">35</a> of file <a class="el" href="_sum_8h_source.html">Sum.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_sum_8h_source.html#l00042">42</a> of file <a class="el" href="_sum_8h_source.html">Sum.h</a>.</p> </div> </div> @@ -718,7 +726,7 @@ Additional Inherited Members</h2></td></tr> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/class_sync_generator.html b/docs/doxygen/html/class_sync_generator.html index 944f21a..807669b 100644 --- a/docs/doxygen/html/class_sync_generator.html +++ b/docs/doxygen/html/class_sync_generator.html @@ -92,15 +92,20 @@ $(document).ready(function(){initNavTree('class_sync_generator.html','');}); <div class="title">SyncGenerator Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Synchronous generator power element. + <a href="class_sync_generator.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_sync_generator_8h_source.html">SyncGenerator.h</a>></code></p> <div class="dynheader"> Inheritance diagram for SyncGenerator:</div> <div class="dyncontent"> <div class="center"> <img src="class_sync_generator.png" usemap="#SyncGenerator_map" alt=""/> <map id="SyncGenerator_map" name="SyncGenerator_map"> -<area href="class_machines.html" alt="Machines" shape="rect" coords="0,112,98,136"/> -<area href="class_power_element.html" alt="PowerElement" shape="rect" coords="0,56,98,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,98,24"/> +<area href="class_machines.html" title="Abstract class for rotary machines power elements. " alt="Machines" shape="rect" coords="0,112,98,136"/> +<area href="class_power_element.html" title="Abstract class of power elements. " alt="PowerElement" shape="rect" coords="0,56,98,80"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,98,24"/> </map> </div></div> <table class="memberdecls"> @@ -548,8 +553,11 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <tr class="separator:a489713cc909f0d733107dad72160f434 inherit pro_methods_class_machines"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_sync_generator_8h_source.html#l00133">133</a> of file <a class="el" href="_sync_generator_8h_source.html">SyncGenerator.h</a>.</p> +<div class="textblock"><p>Synchronous generator power element. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_sync_generator_8h_source.html#l00140">140</a> of file <a class="el" href="_sync_generator_8h_source.html">SyncGenerator.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a24b9894fa42473dfb8bcf82221401a97"></a> <h2 class="memtitle"><span class="permalink"><a href="#a24b9894fa42473dfb8bcf82221401a97">◆ </a></span>GetContextMenu()</h2> @@ -780,7 +788,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/class_sync_motor.html b/docs/doxygen/html/class_sync_motor.html index 09d23a7..6f6d5c4 100644 --- a/docs/doxygen/html/class_sync_motor.html +++ b/docs/doxygen/html/class_sync_motor.html @@ -92,15 +92,20 @@ $(document).ready(function(){initNavTree('class_sync_motor.html','');}); <div class="title">SyncMotor Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Synchronous motor (synchronous compensator) power element. + <a href="class_sync_motor.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_sync_motor_8h_source.html">SyncMotor.h</a>></code></p> <div class="dynheader"> Inheritance diagram for SyncMotor:</div> <div class="dyncontent"> <div class="center"> <img src="class_sync_motor.png" usemap="#SyncMotor_map" alt=""/> <map id="SyncMotor_map" name="SyncMotor_map"> -<area href="class_machines.html" alt="Machines" shape="rect" coords="0,112,92,136"/> -<area href="class_power_element.html" alt="PowerElement" shape="rect" coords="0,56,92,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,92,24"/> +<area href="class_machines.html" title="Abstract class for rotary machines power elements. " alt="Machines" shape="rect" coords="0,112,92,136"/> +<area href="class_power_element.html" title="Abstract class of power elements. " alt="PowerElement" shape="rect" coords="0,56,92,80"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,92,24"/> </map> </div></div> <table class="memberdecls"> @@ -542,8 +547,11 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <tr class="separator:a489713cc909f0d733107dad72160f434 inherit pro_methods_class_machines"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_sync_motor_8h_source.html#l00127">127</a> of file <a class="el" href="_sync_motor_8h_source.html">SyncMotor.h</a>.</p> +<div class="textblock"><p>Synchronous motor (synchronous compensator) power element. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_sync_motor_8h_source.html#l00134">134</a> of file <a class="el" href="_sync_motor_8h_source.html">SyncMotor.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a7b3102220ea5f7e19690af045a6c8278"></a> <h2 class="memtitle"><span class="permalink"><a href="#a7b3102220ea5f7e19690af045a6c8278">◆ </a></span>GetContextMenu()</h2> @@ -735,7 +743,7 @@ void </td><td class="memItemRight" valign="bottom"><b>UpdatePowerFlowArrows <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/class_text.html b/docs/doxygen/html/class_text.html index 8ed6bb4..b2ad59b 100644 --- a/docs/doxygen/html/class_text.html +++ b/docs/doxygen/html/class_text.html @@ -92,14 +92,19 @@ $(document).ready(function(){initNavTree('class_text.html','');}); <div class="title">Text Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that shows power element informations in workspace. + <a href="class_text.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_text_8h_source.html">Text.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Text:</div> <div class="dyncontent"> <div class="center"> <img src="class_text.png" usemap="#Text_map" alt=""/> <map id="Text_map" name="Text_map"> -<area href="class_graphical_element.html" alt="GraphicalElement" shape="rect" coords="0,56,111,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,111,24"/> +<area href="class_graphical_element.html" title="Abstract class for graphical elements shown with power elements in workspace. " alt="GraphicalElement" shape="rect" coords="0,56,111,80"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,111,24"/> </map> </div></div> <table class="memberdecls"> @@ -514,8 +519,11 @@ Additional Inherited Members</h2></td></tr> <tr class="separator:abb2e253ec1e86353cd7160209c96553c inherit pub_static_methods_class_element"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_text_8h_source.html#l00065">65</a> of file <a class="el" href="_text_8h_source.html">Text.h</a>.</p> +<div class="textblock"><p><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that shows power element informations in workspace. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_text_8h_source.html#l00072">72</a> of file <a class="el" href="_text_8h_source.html">Text.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a4f273ea7008c72533327c25caff2e917"></a> <h2 class="memtitle"><span class="permalink"><a href="#a4f273ea7008c72533327c25caff2e917">◆ </a></span>AddParent()</h2> @@ -554,7 +562,7 @@ Additional Inherited Members</h2></td></tr> <p>Add a parent to the element. This method must be used on power elements that connect to a bus, so the parent must be a bus. The element basic points are calculated in this method, so apply this when the element is being inserted. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html">Element</a> parent. </td></tr> + <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> parent. </td></tr> <tr><td class="paramname">position</td><td><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> position in the parent. </td></tr> </table> </dd> @@ -562,7 +570,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#a569178e9138490a981511a644536c0f9">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_text_8h_source.html#l00073">73</a> of file <a class="el" href="_text_8h_source.html">Text.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_text_8h_source.html#l00080">80</a> of file <a class="el" href="_text_8h_source.html">Text.h</a>.</p> </div> </div> diff --git a/docs/doxygen/html/class_transfer_function-members.html b/docs/doxygen/html/class_transfer_function-members.html index 175cdc4..6ae4bfd 100644 --- a/docs/doxygen/html/class_transfer_function-members.html +++ b/docs/doxygen/html/class_transfer_function-members.html @@ -96,7 +96,7 @@ $(document).ready(function(){initNavTree('class_transfer_function.html','');}); <tr class="even"><td class="entry"><a class="el" href="class_element.html#ad1f153a87797633ab310d07e1d06eba9">AddParent</a>(Element *parent)</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr> <tr><td class="entry"><a class="el" href="class_element.html#aa40c60c03d6a76639d8c6f6bab86720e">AddPoint</a>(wxPoint2DDouble point)</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr> <tr class="even"><td class="entry"><a class="el" href="class_element.html#a57f5771fd003020fef3866a1d1dc7487">CalculateBoundaries</a>(wxPoint2DDouble &leftUp, wxPoint2DDouble &rightBottom) const</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> - <tr bgcolor="#f0f0f0"><td class="entry"><b>CalculateSpaceState</b>(int maxIteration=100, double error=1e-3) (defined in <a class="el" href="class_transfer_function.html">TransferFunction</a>)</td><td class="entry"><a class="el" href="class_transfer_function.html">TransferFunction</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr><td class="entry"><a class="el" href="class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a">CalculateSpaceState</a>(int maxIteration=100, double error=1e-3)</td><td class="entry"><a class="el" href="class_transfer_function.html">TransferFunction</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> <tr class="even"><td class="entry"><a class="el" href="class_transfer_function.html#a6a4415d2cf0af290494ea30d586cc187">Contains</a>(wxPoint2DDouble position) const</td><td class="entry"><a class="el" href="class_transfer_function.html">TransferFunction</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>ControlElement</b>(int id) (defined in <a class="el" href="class_control_element.html">ControlElement</a>)</td><td class="entry"><a class="el" href="class_control_element.html">ControlElement</a></td><td class="entry"></td></tr> <tr class="even"><td class="entry"><a class="el" href="class_element.html#acfd2c0fe1af5a8ad6da393fb711fd69a">DoubleFromString</a>(wxWindow *parent, wxString strValue, double &value, wxString errorMsg)</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">static</span></td></tr> @@ -213,7 +213,7 @@ $(document).ready(function(){initNavTree('class_transfer_function.html','');}); <tr><td class="entry"><a class="el" href="class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b">SetWidth</a>(double width)</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> <tr class="even"><td class="entry"><a class="el" href="class_transfer_function.html#afe15de93ab4f93032560a6139091ef10">ShowForm</a>(wxWindow *parent, Element *element)</td><td class="entry"><a class="el" href="class_transfer_function.html">TransferFunction</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> <tr><td class="entry"><a class="el" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">ShowPickbox</a>(bool showPickbox=true)</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">inline</span></td></tr> - <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Solve</b>(double input, double timeStep) (defined in <a class="el" href="class_transfer_function.html">TransferFunction</a>)</td><td class="entry"><a class="el" href="class_transfer_function.html">TransferFunction</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> + <tr class="even"><td class="entry"><a class="el" href="class_transfer_function.html#ab23ed101f7d4e953e4df0d4d480d9798">Solve</a>(double input, double timeStep)</td><td class="entry"><a class="el" href="class_transfer_function.html">TransferFunction</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> <tr><td class="entry"><a class="el" href="class_control_element.html#a61440a392d438de163bfe9ffb8e9efec">StartMove</a>(wxPoint2DDouble position)</td><td class="entry"><a class="el" href="class_control_element.html">ControlElement</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr> <tr class="even"><td class="entry"><a class="el" href="class_element.html#abb2e253ec1e86353cd7160209c96553c">StringFromDouble</a>(double value, int minDecimal=1)</td><td class="entry"><a class="el" href="class_element.html">Element</a></td><td class="entry"><span class="mlabel">static</span></td></tr> <tr bgcolor="#f0f0f0"><td class="entry"><b>TransferFunction</b>(int id) (defined in <a class="el" href="class_transfer_function.html">TransferFunction</a>)</td><td class="entry"><a class="el" href="class_transfer_function.html">TransferFunction</a></td><td class="entry"></td></tr> diff --git a/docs/doxygen/html/class_transfer_function.html b/docs/doxygen/html/class_transfer_function.html index 396cb07..6161ba0 100644 --- a/docs/doxygen/html/class_transfer_function.html +++ b/docs/doxygen/html/class_transfer_function.html @@ -94,6 +94,11 @@ $(document).ready(function(){initNavTree('class_transfer_function.html','');}); <div class="title">TransferFunction Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Calculates the time response by a frequency domain transfer function. + <a href="class_transfer_function.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a>></code></p> <div class="dynheader"> Inheritance diagram for TransferFunction:</div> <div class="dyncontent"> @@ -101,7 +106,7 @@ Inheritance diagram for TransferFunction:</div> <img src="class_transfer_function.png" usemap="#TransferFunction_map" alt=""/> <map id="TransferFunction_map" name="TransferFunction_map"> <area href="class_control_element.html" alt="ControlElement" shape="rect" coords="0,56,109,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,109,24"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,109,24"/> </map> </div></div> <table class="memberdecls"> @@ -151,11 +156,11 @@ virtual void </td><td class="memItemRight" valign="bottom"><b>UpdateText</b <tr class="memitem:aee6c1440c4f527b7a839e07474a381f0"><td class="memItemLeft" align="right" valign="top"><a id="aee6c1440c4f527b7a839e07474a381f0"></a> virtual <a class="el" href="struct_transfer_function_1_1_space_state.html">SpaceState</a> </td><td class="memItemRight" valign="bottom"><b>GetSpaceState</b> ()</td></tr> <tr class="separator:aee6c1440c4f527b7a839e07474a381f0"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:a5f09dd8e5c016a90c69a8e38ef302c8a"><td class="memItemLeft" align="right" valign="top"><a id="a5f09dd8e5c016a90c69a8e38ef302c8a"></a> -virtual void </td><td class="memItemRight" valign="bottom"><b>CalculateSpaceState</b> (int maxIteration=100, double error=1e-3)</td></tr> +<tr class="memitem:a5f09dd8e5c016a90c69a8e38ef302c8a"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a">CalculateSpaceState</a> (int maxIteration=100, double error=1e-3)</td></tr> +<tr class="memdesc:a5f09dd8e5c016a90c69a8e38ef302c8a"><td class="mdescLeft"> </td><td class="mdescRight">Convert the transfer function to space state on controllable canonical form (CCF). <a href="#a5f09dd8e5c016a90c69a8e38ef302c8a">More...</a><br /></td></tr> <tr class="separator:a5f09dd8e5c016a90c69a8e38ef302c8a"><td class="memSeparator" colspan="2"> </td></tr> -<tr class="memitem:ab23ed101f7d4e953e4df0d4d480d9798"><td class="memItemLeft" align="right" valign="top"><a id="ab23ed101f7d4e953e4df0d4d480d9798"></a> -virtual bool </td><td class="memItemRight" valign="bottom"><b>Solve</b> (double input, double timeStep)</td></tr> +<tr class="memitem:ab23ed101f7d4e953e4df0d4d480d9798"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_transfer_function.html#ab23ed101f7d4e953e4df0d4d480d9798">Solve</a> (double input, double timeStep)</td></tr> +<tr class="memdesc:ab23ed101f7d4e953e4df0d4d480d9798"><td class="mdescLeft"> </td><td class="mdescRight">Calculates the time response by the space state form of transfer function. <a href="#ab23ed101f7d4e953e4df0d4d480d9798">More...</a><br /></td></tr> <tr class="separator:ab23ed101f7d4e953e4df0d4d480d9798"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3312f7e9499aa99742093d3b60547862"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_element.html">Element</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_transfer_function.html#a3312f7e9499aa99742093d3b60547862">GetCopy</a> ()</td></tr> <tr class="memdesc:a3312f7e9499aa99742093d3b60547862"><td class="mdescLeft"> </td><td class="mdescRight">Get a the element copy. <a href="#a3312f7e9499aa99742093d3b60547862">More...</a><br /></td></tr> @@ -529,9 +534,59 @@ Additional Inherited Members</h2></td></tr> <tr class="separator:abb2e253ec1e86353cd7160209c96553c inherit pub_static_methods_class_element"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_transfer_function_8h_source.html#l00028">28</a> of file <a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a>.</p> +<div class="textblock"><p>Calculates the time response by a frequency domain transfer function. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_transfer_function_8h_source.html#l00035">35</a> of file <a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> +<a id="a5f09dd8e5c016a90c69a8e38ef302c8a"></a> +<h2 class="memtitle"><span class="permalink"><a href="#a5f09dd8e5c016a90c69a8e38ef302c8a">◆ </a></span>CalculateSpaceState()</h2> + +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">void TransferFunction::CalculateSpaceState </td> + <td>(</td> + <td class="paramtype">int </td> + <td class="paramname"><em>maxIteration</em> = <code>100</code>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">double </td> + <td class="paramname"><em>error</em> = <code>1e-3</code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Convert the transfer function to space state on controllable canonical form (CCF). </p> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">maxIteration</td><td>Max number of solution iteration. </td></tr> + <tr><td class="paramname">error</td><td>Tolerance for calculation. </td></tr> + </table> + </dd> +</dl> + +<p class="definition">Definition at line <a class="el" href="_transfer_function_8cpp_source.html#l00268">268</a> of file <a class="el" href="_transfer_function_8cpp_source.html">TransferFunction.cpp</a>.</p> + +</div> +</div> <a id="a6a4415d2cf0af290494ea30d586cc187"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6a4415d2cf0af290494ea30d586cc187">◆ </a></span>Contains()</h2> @@ -566,7 +621,7 @@ Additional Inherited Members</h2></td></tr> <p>Implements <a class="el" href="class_element.html#abf6c4949733debca55b2f56d8e9b7372">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transfer_function_8h_source.html#l00042">42</a> of file <a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transfer_function_8h_source.html#l00049">49</a> of file <a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a>.</p> </div> </div> @@ -647,7 +702,7 @@ Additional Inherited Members</h2></td></tr> <p>Reimplemented from <a class="el" href="class_element.html#aeabe64a5907e917c8b61afd605ea52c3">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transfer_function_8cpp_source.html#l00376">376</a> of file <a class="el" href="_transfer_function_8cpp_source.html">TransferFunction.cpp</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transfer_function_8cpp_source.html#l00377">377</a> of file <a class="el" href="_transfer_function_8cpp_source.html">TransferFunction.cpp</a>.</p> </div> </div> @@ -685,7 +740,7 @@ Additional Inherited Members</h2></td></tr> <p>Implements <a class="el" href="class_element.html#a038dfd8452fe48ab04bc4e47820c148e">Element</a>.</p> -<p class="definition">Definition at line <a class="el" href="_transfer_function_8h_source.html#l00043">43</a> of file <a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transfer_function_8h_source.html#l00050">50</a> of file <a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a>.</p> </div> </div> @@ -765,7 +820,7 @@ Additional Inherited Members</h2></td></tr> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> @@ -777,6 +832,56 @@ Additional Inherited Members</h2></td></tr> </div> </div> +<a id="ab23ed101f7d4e953e4df0d4d480d9798"></a> +<h2 class="memtitle"><span class="permalink"><a href="#ab23ed101f7d4e953e4df0d4d480d9798">◆ </a></span>Solve()</h2> + +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">bool TransferFunction::Solve </td> + <td>(</td> + <td class="paramtype">double </td> + <td class="paramname"><em>input</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">double </td> + <td class="paramname"><em>timeStep</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">virtual</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Calculates the time response by the space state form of transfer function. </p> +<p>Uses the implicit trapezoidal rule to solve: </p><center> \( y_{n+1}=y_n+\frac{1}{2}h(y'_n+y'_{n+1}) \)</center> <dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">input</td><td>Input value. </td></tr> + <tr><td class="paramname">timeStep</td><td>Time step. </td></tr> + </table> + </dd> +</dl> +<dl class="section return"><dt>Returns</dt><dd>true if the calculation converges, false otherwise. </dd></dl> + +<p>Reimplemented from <a class="el" href="class_control_element.html">ControlElement</a>.</p> + +<p class="definition">Definition at line <a class="el" href="_transfer_function_8cpp_source.html#l00320">320</a> of file <a class="el" href="_transfer_function_8cpp_source.html">TransferFunction.cpp</a>.</p> + +</div> +</div> <hr/>The documentation for this class was generated from the following files:<ul> <li>Project/<a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a></li> <li>Project/<a class="el" href="_transfer_function_8cpp_source.html">TransferFunction.cpp</a></li> diff --git a/docs/doxygen/html/class_transformer.html b/docs/doxygen/html/class_transformer.html index 12236de..87e4dc8 100644 --- a/docs/doxygen/html/class_transformer.html +++ b/docs/doxygen/html/class_transformer.html @@ -93,15 +93,20 @@ $(document).ready(function(){initNavTree('class_transformer.html','');}); <div class="title">Transformer Class Reference</div> </div> </div><!--header--> <div class="contents"> + +<p>Two-winding transformer power element. + <a href="class_transformer.html#details">More...</a></p> + +<p><code>#include <<a class="el" href="_transformer_8h_source.html">Transformer.h</a>></code></p> <div class="dynheader"> Inheritance diagram for Transformer:</div> <div class="dyncontent"> <div class="center"> <img src="class_transformer.png" usemap="#Transformer_map" alt=""/> <map id="Transformer_map" name="Transformer_map"> -<area href="class_branch.html" alt="Branch" shape="rect" coords="0,112,92,136"/> -<area href="class_power_element.html" alt="PowerElement" shape="rect" coords="0,56,92,80"/> -<area href="class_element.html" alt="Element" shape="rect" coords="0,0,92,24"/> +<area href="class_branch.html" title="Abstract class for branch power elements. " alt="Branch" shape="rect" coords="0,112,92,136"/> +<area href="class_power_element.html" title="Abstract class of power elements. " alt="PowerElement" shape="rect" coords="0,56,92,80"/> +<area href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat..." alt="Element" shape="rect" coords="0,0,92,24"/> </map> </div></div> <table class="memberdecls"> @@ -531,8 +536,11 @@ Additional Inherited Members</h2></td></tr> <tr class="separator:abb2e253ec1e86353cd7160209c96553c inherit pub_static_methods_class_element"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_transformer_8h_source.html#l00071">71</a> of file <a class="el" href="_transformer_8h_source.html">Transformer.h</a>.</p> +<div class="textblock"><p>Two-winding transformer power element. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira <a href="#" onclick="location.href='mai'+'lto:'+'tha'+'le'+'s@u'+'fu'+'.br'; return false;">thale<span style="display: none;">.nosp@m.</span>s@uf<span style="display: none;">.nosp@m.</span>u.br</a> </dd></dl> +<dl class="section date"><dt>Date</dt><dd>06/10/2017 </dd></dl> + +<p class="definition">Definition at line <a class="el" href="_transformer_8h_source.html#l00078">78</a> of file <a class="el" href="_transformer_8h_source.html">Transformer.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="aea52a4562ec5b4a79bf82b8ede32ecc6"></a> <h2 class="memtitle"><span class="permalink"><a href="#aea52a4562ec5b4a79bf82b8ede32ecc6">◆ </a></span>AddParent()</h2> @@ -571,7 +579,7 @@ Additional Inherited Members</h2></td></tr> <p>Add a parent to the element. This method must be used on power elements that connect to a bus, so the parent must be a bus. The element basic points are calculated in this method, so apply this when the element is being inserted. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> - <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html">Element</a> parent. </td></tr> + <tr><td class="paramname">parent</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> parent. </td></tr> <tr><td class="paramname">position</td><td><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> position in the parent. </td></tr> </table> </dd> @@ -1149,7 +1157,7 @@ Additional Inherited Members</h2></td></tr> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">parent</td><td>Form parent </td></tr> - <tr><td class="paramname">element</td><td><a class="el" href="class_element.html">Element</a> that will be edited. </td></tr> + <tr><td class="paramname">element</td><td><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that will be edited. </td></tr> </table> </dd> </dl> diff --git a/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.html b/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.html index 5a7d08d..6d29206 100644 --- a/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.html +++ b/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.html @@ -93,10 +93,16 @@ $(document).ready(function(){initNavTree('dir_ffd1f789ec7bd0a45fc6ad92579c5070.h Files</h2></td></tr> <tr class="memitem:_about_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_about_form_8h.html">AboutForm.h</a> <a href="_about_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_branch_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_branch_8h.html">Branch.h</a> <a href="_branch_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_bus_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_bus_8h.html">Bus.h</a> <a href="_bus_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_bus_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_bus_form_8h.html">BusForm.h</a> <a href="_bus_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_camera_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_camera_8h.html">Camera.h</a> <a href="_camera_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_capacitor_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_capacitor_8h.html">Capacitor.h</a> <a href="_capacitor_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_chart_view_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_chart_view_8h.html">ChartView.h</a> <a href="_chart_view_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_connection_line_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_connection_line_8h.html">ConnectionLine.h</a> <a href="_connection_line_8h_source.html">[code]</a></td></tr> @@ -119,20 +125,20 @@ Files</h2></td></tr> <tr class="memitem:_data_report_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_data_report_8h.html">DataReport.h</a> <a href="_data_report_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_electric_calculation_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_electric_calculation_8h.html">ElectricCalculation.h</a> <a href="_electric_calculation_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:_electric_calculation_8h"><td class="mdescLeft"> </td><td class="mdescRight">Base class of electric calculations, with general methods. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_electromechanical_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_electromechanical_8h.html">Electromechanical.h</a> <a href="_electromechanical_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:_electromechanical_8h"><td class="mdescLeft"> </td><td class="mdescRight">Calculates the electromechanical transient based on disturbances (e.g. system fault). <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_element_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_element_8h.html">Element.h</a> <a href="_element_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:_element_8h"><td class="mdescLeft"> </td><td class="mdescRight">Class to manage color of OpenGL. <br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_element_data_object_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_element_data_object_8h.html">ElementDataObject.h</a> <a href="_element_data_object_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_element_plot_data_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_element_plot_data_8h.html">ElementPlotData.h</a> <a href="_element_plot_data_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_exponential_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_exponential_8h.html">Exponential.h</a> <a href="_exponential_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_exponential_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_exponential_form_8h.html">ExponentialForm.h</a> <a href="_exponential_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_fault_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_fault_8h.html">Fault.h</a> <a href="_fault_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:_fault_8h"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the fault of the system and update the elements data. <br /></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_file_handing_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_file_handing_8h.html">FileHanding.h</a> <a href="_file_handing_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> @@ -144,8 +150,14 @@ Files</h2></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_generator_stab_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_generator_stab_form_8h.html">GeneratorStabForm.h</a> <a href="_generator_stab_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_graphical_element_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_graphical_element_8h.html">GraphicalElement.h</a> <a href="_graphical_element_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_ind_motor_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_ind_motor_8h.html">IndMotor.h</a> <a href="_ind_motor_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_ind_motor_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_ind_motor_form_8h.html">IndMotorForm.h</a> <a href="_ind_motor_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_inductor_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_inductor_8h.html">Inductor.h</a> <a href="_inductor_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_i_o_control_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_i_o_control_8h.html">IOControl.h</a> <a href="_i_o_control_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_i_o_control_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_i_o_control_form_8h.html">IOControlForm.h</a> <a href="_i_o_control_form_8h_source.html">[code]</a></td></tr> @@ -154,16 +166,25 @@ Files</h2></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_limiter_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_limiter_form_8h.html">LimiterForm.h</a> <a href="_limiter_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_line_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_line_8h.html">Line.h</a> <a href="_line_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_line_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_line_form_8h.html">LineForm.h</a> <a href="_line_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_load_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_load_8h.html">Load.h</a> <a href="_load_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_load_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_load_form_8h.html">LoadForm.h</a> <a href="_load_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_machines_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_machines_8h.html">Machines.h</a> <a href="_machines_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_main_frame_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_main_frame_8h.html">MainFrame.h</a> <a href="_main_frame_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_multiplier_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_multiplier_8h.html">Multiplier.h</a> <a href="_multiplier_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_power_element_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_power_element_8h.html">PowerElement.h</a> <a href="_power_element_8h_source.html">[code]</a></td></tr> -<tr class="memdesc:_power_element_8h"><td class="mdescLeft"> </td><td class="mdescRight">Switching data of power elements. <br /></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_power_flow_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_power_flow_8h.html">PowerFlow.h</a> <a href="_power_flow_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_properties_data_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_properties_data_8h.html">PropertiesData.h</a> <a href="_properties_data_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_rate_limiter_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_rate_limiter_8h.html">RateLimiter.h</a> <a href="_rate_limiter_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> @@ -171,18 +192,32 @@ Files</h2></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_reactive_shunt_element_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_reactive_shunt_element_form_8h.html">ReactiveShuntElementForm.h</a> <a href="_reactive_shunt_element_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_shunt_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_shunt_8h.html">Shunt.h</a> <a href="_shunt_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_simulations_settings_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_simulations_settings_form_8h.html">SimulationsSettingsForm.h</a> <a href="_simulations_settings_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_sum_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_sum_8h.html">Sum.h</a> <a href="_sum_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_sum_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_sum_form_8h.html">SumForm.h</a> <a href="_sum_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_switching_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_switching_form_8h.html">SwitchingForm.h</a> <a href="_switching_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_sync_generator_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_sync_generator_8h.html">SyncGenerator.h</a> <a href="_sync_generator_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_sync_machine_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_sync_machine_form_8h.html">SyncMachineForm.h</a> <a href="_sync_machine_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_sync_motor_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_sync_motor_8h.html">SyncMotor.h</a> <a href="_sync_motor_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_text_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_text_8h.html">Text.h</a> <a href="_text_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_text_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_text_form_8h.html">TextForm.h</a> <a href="_text_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_transfer_function_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_transfer_function_8h.html">TransferFunction.h</a> <a href="_transfer_function_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_transfer_function_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_transfer_function_form_8h.html">TransferFunctionForm.h</a> <a href="_transfer_function_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_transformer_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_transformer_8h.html">Transformer.h</a> <a href="_transformer_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_transformer_form_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_transformer_form_8h.html">TransformerForm.h</a> <a href="_transformer_form_8h_source.html">[code]</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:_workspace_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_workspace_8h.html">Workspace.h</a> <a href="_workspace_8h_source.html">[code]</a></td></tr> diff --git a/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.js b/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.js index 241c27d..cf34412 100644 --- a/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.js +++ b/docs/doxygen/html/dir_ffd1f789ec7bd0a45fc6ad92579c5070.js @@ -7,9 +7,14 @@ var dir_ffd1f789ec7bd0a45fc6ad92579c5070 = [ "ArtMetro.cpp", "_art_metro_8cpp_source.html", null ], [ "ArtMetro.h", "_art_metro_8h_source.html", null ], [ "Branch.cpp", "_branch_8cpp_source.html", null ], - [ "Branch.h", "_branch_8h_source.html", null ], + [ "Branch.h", "_branch_8h.html", [ + [ "Branch", "class_branch.html", "class_branch" ] + ] ], [ "Bus.cpp", "_bus_8cpp_source.html", null ], - [ "Bus.h", "_bus_8h_source.html", null ], + [ "Bus.h", "_bus_8h.html", [ + [ "BusElectricalData", "struct_bus_electrical_data.html", "struct_bus_electrical_data" ], + [ "Bus", "class_bus.html", "class_bus" ] + ] ], [ "BusForm.cpp", "_bus_form_8cpp_source.html", null ], [ "BusForm.h", "_bus_form_8h.html", [ [ "BusForm", "class_bus_form.html", "class_bus_form" ] @@ -20,7 +25,10 @@ var dir_ffd1f789ec7bd0a45fc6ad92579c5070 = [ "Camera", "class_camera.html", "class_camera" ] ] ], [ "Capacitor.cpp", "_capacitor_8cpp_source.html", null ], - [ "Capacitor.h", "_capacitor_8h_source.html", null ], + [ "Capacitor.h", "_capacitor_8h.html", [ + [ "CapacitorElectricalData", "struct_capacitor_electrical_data.html", "struct_capacitor_electrical_data" ], + [ "Capacitor", "class_capacitor.html", "class_capacitor" ] + ] ], [ "ChartView.cpp", "_chart_view_8cpp_source.html", null ], [ "ChartView.h", "_chart_view_8h.html", [ [ "ChartView", "class_chart_view.html", "class_chart_view" ] @@ -80,12 +88,18 @@ var dir_ffd1f789ec7bd0a45fc6ad92579c5070 = [ "Element.cpp", "_element_8cpp_source.html", null ], [ "Element.h", "_element_8h.html", "_element_8h" ], [ "ElementDataObject.cpp", "_element_data_object_8cpp_source.html", null ], - [ "ElementDataObject.h", "_element_data_object_8h_source.html", null ], + [ "ElementDataObject.h", "_element_data_object_8h.html", [ + [ "ElementsLists", "struct_elements_lists.html", "struct_elements_lists" ], + [ "ElementDataObject", "class_element_data_object.html", "class_element_data_object" ] + ] ], [ "ElementForm.cpp", "_element_form_8cpp_source.html", null ], [ "ElementForm.h", "_element_form_8h_source.html", null ], [ "ElementFormBitmaps.cpp", "_element_form_bitmaps_8cpp_source.html", null ], [ "ElementPlotData.cpp", "_element_plot_data_8cpp_source.html", null ], - [ "ElementPlotData.h", "_element_plot_data_8h_source.html", null ], + [ "ElementPlotData.h", "_element_plot_data_8h.html", [ + [ "PlotData", "class_plot_data.html", "class_plot_data" ], + [ "ElementPlotData", "class_element_plot_data.html", "class_element_plot_data" ] + ] ], [ "Exponential.cpp", "_exponential_8cpp_source.html", null ], [ "Exponential.h", "_exponential_8h.html", [ [ "Exponential", "class_exponential.html", "class_exponential" ] @@ -119,15 +133,23 @@ var dir_ffd1f789ec7bd0a45fc6ad92579c5070 = [ "GeneratorStabForm", "class_generator_stab_form.html", "class_generator_stab_form" ] ] ], [ "GraphicalElement.cpp", "_graphical_element_8cpp_source.html", null ], - [ "GraphicalElement.h", "_graphical_element_8h_source.html", null ], + [ "GraphicalElement.h", "_graphical_element_8h.html", [ + [ "GraphicalElement", "class_graphical_element.html", "class_graphical_element" ] + ] ], [ "IndMotor.cpp", "_ind_motor_8cpp_source.html", null ], - [ "IndMotor.h", "_ind_motor_8h_source.html", null ], + [ "IndMotor.h", "_ind_motor_8h.html", [ + [ "IndMotorElectricalData", "struct_ind_motor_electrical_data.html", "struct_ind_motor_electrical_data" ], + [ "IndMotor", "class_ind_motor.html", "class_ind_motor" ] + ] ], [ "IndMotorForm.cpp", "_ind_motor_form_8cpp_source.html", null ], [ "IndMotorForm.h", "_ind_motor_form_8h.html", [ [ "IndMotorForm", "class_ind_motor_form.html", "class_ind_motor_form" ] ] ], [ "Inductor.cpp", "_inductor_8cpp_source.html", null ], - [ "Inductor.h", "_inductor_8h_source.html", null ], + [ "Inductor.h", "_inductor_8h.html", [ + [ "InductorElectricalData", "struct_inductor_electrical_data.html", "struct_inductor_electrical_data" ], + [ "Inductor", "class_inductor.html", "class_inductor" ] + ] ], [ "IOControl.cpp", "_i_o_control_8cpp_source.html", null ], [ "IOControl.h", "_i_o_control_8h.html", [ [ "IOControl", "class_i_o_control.html", "class_i_o_control" ] @@ -145,19 +167,24 @@ var dir_ffd1f789ec7bd0a45fc6ad92579c5070 = [ "LimiterForm", "class_limiter_form.html", "class_limiter_form" ] ] ], [ "Line.cpp", "_line_8cpp_source.html", null ], - [ "Line.h", "_line_8h_source.html", null ], + [ "Line.h", "_line_8h.html", [ + [ "LineElectricalData", "struct_line_electrical_data.html", "struct_line_electrical_data" ], + [ "Line", "class_line.html", "class_line" ] + ] ], [ "LineForm.cpp", "_line_form_8cpp_source.html", null ], [ "LineForm.h", "_line_form_8h.html", [ [ "LineForm", "class_line_form.html", "class_line_form" ] ] ], [ "Load.cpp", "_load_8cpp_source.html", null ], - [ "Load.h", "_load_8h_source.html", null ], + [ "Load.h", "_load_8h.html", "_load_8h" ], [ "LoadForm.cpp", "_load_form_8cpp_source.html", null ], [ "LoadForm.h", "_load_form_8h.html", [ [ "LoadForm", "class_load_form.html", "class_load_form" ] ] ], [ "Machines.cpp", "_machines_8cpp_source.html", null ], - [ "Machines.h", "_machines_8h_source.html", null ], + [ "Machines.h", "_machines_8h.html", [ + [ "Machines", "class_machines.html", "class_machines" ] + ] ], [ "main.cpp", "main_8cpp_source.html", null ], [ "MainFrame.cpp", "_main_frame_8cpp_source.html", null ], [ "MainFrame.h", "_main_frame_8h.html", "_main_frame_8h" ], @@ -171,9 +198,11 @@ var dir_ffd1f789ec7bd0a45fc6ad92579c5070 = [ "PowerElement.cpp", "_power_element_8cpp_source.html", null ], [ "PowerElement.h", "_power_element_8h.html", "_power_element_8h" ], [ "PowerFlow.cpp", "_power_flow_8cpp_source.html", null ], - [ "PowerFlow.h", "_power_flow_8h_source.html", null ], + [ "PowerFlow.h", "_power_flow_8h.html", [ + [ "PowerFlow", "class_power_flow.html", "class_power_flow" ] + ] ], [ "PropertiesData.cpp", "_properties_data_8cpp_source.html", null ], - [ "PropertiesData.h", "_properties_data_8h_source.html", null ], + [ "PropertiesData.h", "_properties_data_8h.html", "_properties_data_8h" ], [ "PropertiesForm.cpp", "_properties_form_8cpp_source.html", null ], [ "PropertiesForm.h", "_properties_form_8h_source.html", null ], [ "PropertiesFormBitmaps.cpp", "_properties_form_bitmaps_8cpp_source.html", null ], @@ -190,13 +219,17 @@ var dir_ffd1f789ec7bd0a45fc6ad92579c5070 = [ "ReactiveShuntElementForm", "class_reactive_shunt_element_form.html", "class_reactive_shunt_element_form" ] ] ], [ "Shunt.cpp", "_shunt_8cpp_source.html", null ], - [ "Shunt.h", "_shunt_8h_source.html", null ], + [ "Shunt.h", "_shunt_8h.html", [ + [ "Shunt", "class_shunt.html", "class_shunt" ] + ] ], [ "SimulationsSettingsForm.cpp", "_simulations_settings_form_8cpp_source.html", null ], [ "SimulationsSettingsForm.h", "_simulations_settings_form_8h.html", [ [ "SimulationsSettingsForm", "class_simulations_settings_form.html", "class_simulations_settings_form" ] ] ], [ "Sum.cpp", "_sum_8cpp_source.html", null ], - [ "Sum.h", "_sum_8h_source.html", null ], + [ "Sum.h", "_sum_8h.html", [ + [ "Sum", "class_sum.html", "class_sum" ] + ] ], [ "SumForm.cpp", "_sum_form_8cpp_source.html", null ], [ "SumForm.h", "_sum_form_8h.html", [ [ "SumForm", "class_sum_form.html", "class_sum_form" ] @@ -206,27 +239,36 @@ var dir_ffd1f789ec7bd0a45fc6ad92579c5070 = [ "SwitchingForm", "class_switching_form.html", "class_switching_form" ] ] ], [ "SyncGenerator.cpp", "_sync_generator_8cpp_source.html", null ], - [ "SyncGenerator.h", "_sync_generator_8h_source.html", null ], + [ "SyncGenerator.h", "_sync_generator_8h.html", [ + [ "SyncGeneratorElectricalData", "struct_sync_generator_electrical_data.html", "struct_sync_generator_electrical_data" ], + [ "SyncGenerator", "class_sync_generator.html", "class_sync_generator" ] + ] ], [ "SyncMachineForm.cpp", "_sync_machine_form_8cpp_source.html", null ], [ "SyncMachineForm.h", "_sync_machine_form_8h.html", [ [ "SyncMachineForm", "class_sync_machine_form.html", "class_sync_machine_form" ] ] ], [ "SyncMotor.cpp", "_sync_motor_8cpp_source.html", null ], - [ "SyncMotor.h", "_sync_motor_8h_source.html", null ], + [ "SyncMotor.h", "_sync_motor_8h.html", [ + [ "SyncMotorElectricalData", "struct_sync_motor_electrical_data.html", "struct_sync_motor_electrical_data" ], + [ "SyncMotor", "class_sync_motor.html", "class_sync_motor" ] + ] ], [ "Text.cpp", "_text_8cpp_source.html", null ], - [ "Text.h", "_text_8h_source.html", null ], + [ "Text.h", "_text_8h.html", "_text_8h" ], [ "TextForm.cpp", "_text_form_8cpp_source.html", null ], [ "TextForm.h", "_text_form_8h.html", [ [ "TextForm", "class_text_form.html", "class_text_form" ] ] ], [ "TransferFunction.cpp", "_transfer_function_8cpp_source.html", null ], - [ "TransferFunction.h", "_transfer_function_8h_source.html", null ], + [ "TransferFunction.h", "_transfer_function_8h.html", [ + [ "TransferFunction", "class_transfer_function.html", "class_transfer_function" ], + [ "SpaceState", "struct_transfer_function_1_1_space_state.html", "struct_transfer_function_1_1_space_state" ] + ] ], [ "TransferFunctionForm.cpp", "_transfer_function_form_8cpp_source.html", null ], [ "TransferFunctionForm.h", "_transfer_function_form_8h.html", [ [ "TransferFunctionForm", "class_transfer_function_form.html", "class_transfer_function_form" ] ] ], [ "Transformer.cpp", "_transformer_8cpp_source.html", null ], - [ "Transformer.h", "_transformer_8h_source.html", null ], + [ "Transformer.h", "_transformer_8h.html", "_transformer_8h" ], [ "TransformerForm.cpp", "_transformer_form_8cpp_source.html", null ], [ "TransformerForm.h", "_transformer_form_8h.html", [ [ "TransformerForm", "class_transformer_form.html", "class_transformer_form" ] diff --git a/docs/doxygen/html/files.html b/docs/doxygen/html/files.html index f045c65..a7be6fa 100644 --- a/docs/doxygen/html/files.html +++ b/docs/doxygen/html/files.html @@ -96,16 +96,16 @@ $(document).ready(function(){initNavTree('files.html','');}); <tr id="row_0_2_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_art_metro_8cpp_source.html"><span class="icondoc"></span></a><b>ArtMetro.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_3_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_art_metro_8h_source.html"><span class="icondoc"></span></a><b>ArtMetro.h</b></td><td class="desc"></td></tr> <tr id="row_0_4_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_branch_8cpp_source.html"><span class="icondoc"></span></a><b>Branch.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_5_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_branch_8h_source.html"><span class="icondoc"></span></a><b>Branch.h</b></td><td class="desc"></td></tr> +<tr id="row_0_5_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_branch_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_branch_8h.html" target="_self">Branch.h</a></td><td class="desc"></td></tr> <tr id="row_0_6_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_bus_8cpp_source.html"><span class="icondoc"></span></a><b>Bus.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_7_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_bus_8h_source.html"><span class="icondoc"></span></a><b>Bus.h</b></td><td class="desc"></td></tr> +<tr id="row_0_7_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_bus_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_bus_8h.html" target="_self">Bus.h</a></td><td class="desc"></td></tr> <tr id="row_0_8_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_bus_form_8cpp_source.html"><span class="icondoc"></span></a><b>BusForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_9_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_bus_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_bus_form_8h.html" target="_self">BusForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_10_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_bus_form_bitmaps_8cpp_source.html"><span class="icondoc"></span></a><b>BusFormBitmaps.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_11_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_camera_8cpp_source.html"><span class="icondoc"></span></a><b>Camera.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_12_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_camera_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_camera_8h.html" target="_self">Camera.h</a></td><td class="desc"></td></tr> <tr id="row_0_13_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_capacitor_8cpp_source.html"><span class="icondoc"></span></a><b>Capacitor.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_14_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_capacitor_8h_source.html"><span class="icondoc"></span></a><b>Capacitor.h</b></td><td class="desc"></td></tr> +<tr id="row_0_14_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_capacitor_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_capacitor_8h.html" target="_self">Capacitor.h</a></td><td class="desc"></td></tr> <tr id="row_0_15_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_chart_view_8cpp_source.html"><span class="icondoc"></span></a><b>ChartView.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_16_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_chart_view_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_chart_view_8h.html" target="_self">ChartView.h</a></td><td class="desc"></td></tr> <tr id="row_0_17_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_chart_view_base_8cpp_source.html"><span class="icondoc"></span></a><b>ChartViewBase.cpp</b></td><td class="desc"></td></tr> @@ -137,24 +137,24 @@ $(document).ready(function(){initNavTree('files.html','');}); <tr id="row_0_43_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_data_report_bitmaps_8cpp_source.html"><span class="icondoc"></span></a><b>DataReportBitmaps.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_44_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_degrees_and_radians_8h_source.html"><span class="icondoc"></span></a><b>DegreesAndRadians.h</b></td><td class="desc"></td></tr> <tr id="row_0_45_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_electric_calculation_8cpp_source.html"><span class="icondoc"></span></a><b>ElectricCalculation.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_46_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_electric_calculation_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_electric_calculation_8h.html" target="_self">ElectricCalculation.h</a></td><td class="desc">Base class of electric calculations, with general methods </td></tr> +<tr id="row_0_46_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_electric_calculation_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_electric_calculation_8h.html" target="_self">ElectricCalculation.h</a></td><td class="desc"></td></tr> <tr id="row_0_47_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_electromechanical_8cpp_source.html"><span class="icondoc"></span></a><b>Electromechanical.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_48_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_electromechanical_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_electromechanical_8h.html" target="_self">Electromechanical.h</a></td><td class="desc">Calculates the electromechanical transient based on disturbances (e.g. system fault) </td></tr> +<tr id="row_0_48_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_electromechanical_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_electromechanical_8h.html" target="_self">Electromechanical.h</a></td><td class="desc"></td></tr> <tr id="row_0_49_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_element_8cpp_source.html"><span class="icondoc"></span></a><b>Element.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_50_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_element_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_element_8h.html" target="_self">Element.h</a></td><td class="desc">Class to manage color of OpenGL </td></tr> +<tr id="row_0_50_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_element_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_element_8h.html" target="_self">Element.h</a></td><td class="desc"></td></tr> <tr id="row_0_51_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_element_data_object_8cpp_source.html"><span class="icondoc"></span></a><b>ElementDataObject.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_52_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_element_data_object_8h_source.html"><span class="icondoc"></span></a><b>ElementDataObject.h</b></td><td class="desc"></td></tr> +<tr id="row_0_52_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_element_data_object_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_element_data_object_8h.html" target="_self">ElementDataObject.h</a></td><td class="desc"></td></tr> <tr id="row_0_53_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_element_form_8cpp_source.html"><span class="icondoc"></span></a><b>ElementForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_54_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_element_form_8h_source.html"><span class="icondoc"></span></a><b>ElementForm.h</b></td><td class="desc"></td></tr> <tr id="row_0_55_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_element_form_bitmaps_8cpp_source.html"><span class="icondoc"></span></a><b>ElementFormBitmaps.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_56_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_element_plot_data_8cpp_source.html"><span class="icondoc"></span></a><b>ElementPlotData.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_57_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_element_plot_data_8h_source.html"><span class="icondoc"></span></a><b>ElementPlotData.h</b></td><td class="desc"></td></tr> +<tr id="row_0_57_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_element_plot_data_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_element_plot_data_8h.html" target="_self">ElementPlotData.h</a></td><td class="desc"></td></tr> <tr id="row_0_58_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_exponential_8cpp_source.html"><span class="icondoc"></span></a><b>Exponential.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_59_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_exponential_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_exponential_8h.html" target="_self">Exponential.h</a></td><td class="desc"></td></tr> <tr id="row_0_60_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_exponential_form_8cpp_source.html"><span class="icondoc"></span></a><b>ExponentialForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_61_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_exponential_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_exponential_form_8h.html" target="_self">ExponentialForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_62_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_fault_8cpp_source.html"><span class="icondoc"></span></a><b>Fault.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_63_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_fault_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_fault_8h.html" target="_self">Fault.h</a></td><td class="desc">Calculate the fault of the system and update the elements data </td></tr> +<tr id="row_0_63_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_fault_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_fault_8h.html" target="_self">Fault.h</a></td><td class="desc"></td></tr> <tr id="row_0_64_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_file_handing_8cpp_source.html"><span class="icondoc"></span></a><b>FileHanding.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_65_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_file_handing_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_file_handing_8h.html" target="_self">FileHanding.h</a></td><td class="desc"></td></tr> <tr id="row_0_66_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_gain_8cpp_source.html"><span class="icondoc"></span></a><b>Gain.cpp</b></td><td class="desc"></td></tr> @@ -166,13 +166,13 @@ $(document).ready(function(){initNavTree('files.html','');}); <tr id="row_0_72_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_generator_stab_form_8cpp_source.html"><span class="icondoc"></span></a><b>GeneratorStabForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_73_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_generator_stab_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_generator_stab_form_8h.html" target="_self">GeneratorStabForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_74_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_graphical_element_8cpp_source.html"><span class="icondoc"></span></a><b>GraphicalElement.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_75_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_graphical_element_8h_source.html"><span class="icondoc"></span></a><b>GraphicalElement.h</b></td><td class="desc"></td></tr> +<tr id="row_0_75_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_graphical_element_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_graphical_element_8h.html" target="_self">GraphicalElement.h</a></td><td class="desc"></td></tr> <tr id="row_0_76_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_ind_motor_8cpp_source.html"><span class="icondoc"></span></a><b>IndMotor.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_77_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_ind_motor_8h_source.html"><span class="icondoc"></span></a><b>IndMotor.h</b></td><td class="desc"></td></tr> +<tr id="row_0_77_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_ind_motor_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_ind_motor_8h.html" target="_self">IndMotor.h</a></td><td class="desc"></td></tr> <tr id="row_0_78_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_ind_motor_form_8cpp_source.html"><span class="icondoc"></span></a><b>IndMotorForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_79_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_ind_motor_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_ind_motor_form_8h.html" target="_self">IndMotorForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_80_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_inductor_8cpp_source.html"><span class="icondoc"></span></a><b>Inductor.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_81_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_inductor_8h_source.html"><span class="icondoc"></span></a><b>Inductor.h</b></td><td class="desc"></td></tr> +<tr id="row_0_81_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_inductor_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_inductor_8h.html" target="_self">Inductor.h</a></td><td class="desc"></td></tr> <tr id="row_0_82_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_i_o_control_8cpp_source.html"><span class="icondoc"></span></a><b>IOControl.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_83_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_i_o_control_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_i_o_control_8h.html" target="_self">IOControl.h</a></td><td class="desc"></td></tr> <tr id="row_0_84_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_i_o_control_form_8cpp_source.html"><span class="icondoc"></span></a><b>IOControlForm.cpp</b></td><td class="desc"></td></tr> @@ -182,15 +182,15 @@ $(document).ready(function(){initNavTree('files.html','');}); <tr id="row_0_88_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_limiter_form_8cpp_source.html"><span class="icondoc"></span></a><b>LimiterForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_89_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_limiter_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_limiter_form_8h.html" target="_self">LimiterForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_90_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_line_8cpp_source.html"><span class="icondoc"></span></a><b>Line.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_91_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_line_8h_source.html"><span class="icondoc"></span></a><b>Line.h</b></td><td class="desc"></td></tr> +<tr id="row_0_91_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_line_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_line_8h.html" target="_self">Line.h</a></td><td class="desc"></td></tr> <tr id="row_0_92_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_line_form_8cpp_source.html"><span class="icondoc"></span></a><b>LineForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_93_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_line_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_line_form_8h.html" target="_self">LineForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_94_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_load_8cpp_source.html"><span class="icondoc"></span></a><b>Load.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_95_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_load_8h_source.html"><span class="icondoc"></span></a><b>Load.h</b></td><td class="desc"></td></tr> +<tr id="row_0_95_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_load_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_load_8h.html" target="_self">Load.h</a></td><td class="desc"></td></tr> <tr id="row_0_96_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_load_form_8cpp_source.html"><span class="icondoc"></span></a><b>LoadForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_97_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_load_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_load_form_8h.html" target="_self">LoadForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_98_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_machines_8cpp_source.html"><span class="icondoc"></span></a><b>Machines.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_99_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_machines_8h_source.html"><span class="icondoc"></span></a><b>Machines.h</b></td><td class="desc"></td></tr> +<tr id="row_0_99_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_machines_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_machines_8h.html" target="_self">Machines.h</a></td><td class="desc"></td></tr> <tr id="row_0_100_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="main_8cpp_source.html"><span class="icondoc"></span></a><b>main.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_101_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_main_frame_8cpp_source.html"><span class="icondoc"></span></a><b>MainFrame.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_102_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_main_frame_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_main_frame_8h.html" target="_self">MainFrame.h</a></td><td class="desc"></td></tr> @@ -200,11 +200,11 @@ $(document).ready(function(){initNavTree('files.html','');}); <tr id="row_0_106_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_multiplier_8cpp_source.html"><span class="icondoc"></span></a><b>Multiplier.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_107_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_multiplier_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_multiplier_8h.html" target="_self">Multiplier.h</a></td><td class="desc"></td></tr> <tr id="row_0_108_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_power_element_8cpp_source.html"><span class="icondoc"></span></a><b>PowerElement.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_109_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_power_element_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_power_element_8h.html" target="_self">PowerElement.h</a></td><td class="desc">Switching data of power elements </td></tr> +<tr id="row_0_109_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_power_element_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_power_element_8h.html" target="_self">PowerElement.h</a></td><td class="desc"></td></tr> <tr id="row_0_110_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_power_flow_8cpp_source.html"><span class="icondoc"></span></a><b>PowerFlow.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_111_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_power_flow_8h_source.html"><span class="icondoc"></span></a><b>PowerFlow.h</b></td><td class="desc"></td></tr> +<tr id="row_0_111_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_power_flow_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_power_flow_8h.html" target="_self">PowerFlow.h</a></td><td class="desc"></td></tr> <tr id="row_0_112_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_properties_data_8cpp_source.html"><span class="icondoc"></span></a><b>PropertiesData.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_113_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_properties_data_8h_source.html"><span class="icondoc"></span></a><b>PropertiesData.h</b></td><td class="desc"></td></tr> +<tr id="row_0_113_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_properties_data_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_properties_data_8h.html" target="_self">PropertiesData.h</a></td><td class="desc"></td></tr> <tr id="row_0_114_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_properties_form_8cpp_source.html"><span class="icondoc"></span></a><b>PropertiesForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_115_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_properties_form_8h_source.html"><span class="icondoc"></span></a><b>PropertiesForm.h</b></td><td class="desc"></td></tr> <tr id="row_0_116_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_properties_form_bitmaps_8cpp_source.html"><span class="icondoc"></span></a><b>PropertiesFormBitmaps.cpp</b></td><td class="desc"></td></tr> @@ -215,31 +215,31 @@ $(document).ready(function(){initNavTree('files.html','');}); <tr id="row_0_121_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_reactive_shunt_element_form_8cpp_source.html"><span class="icondoc"></span></a><b>ReactiveShuntElementForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_122_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_reactive_shunt_element_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_reactive_shunt_element_form_8h.html" target="_self">ReactiveShuntElementForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_123_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_shunt_8cpp_source.html"><span class="icondoc"></span></a><b>Shunt.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_124_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_shunt_8h_source.html"><span class="icondoc"></span></a><b>Shunt.h</b></td><td class="desc"></td></tr> +<tr id="row_0_124_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_shunt_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_shunt_8h.html" target="_self">Shunt.h</a></td><td class="desc"></td></tr> <tr id="row_0_125_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_simulations_settings_form_8cpp_source.html"><span class="icondoc"></span></a><b>SimulationsSettingsForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_126_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_simulations_settings_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_simulations_settings_form_8h.html" target="_self">SimulationsSettingsForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_127_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_sum_8cpp_source.html"><span class="icondoc"></span></a><b>Sum.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_128_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_sum_8h_source.html"><span class="icondoc"></span></a><b>Sum.h</b></td><td class="desc"></td></tr> +<tr id="row_0_128_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_sum_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_sum_8h.html" target="_self">Sum.h</a></td><td class="desc"></td></tr> <tr id="row_0_129_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_sum_form_8cpp_source.html"><span class="icondoc"></span></a><b>SumForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_130_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_sum_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_sum_form_8h.html" target="_self">SumForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_131_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_switching_form_8cpp_source.html"><span class="icondoc"></span></a><b>SwitchingForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_132_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_switching_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_switching_form_8h.html" target="_self">SwitchingForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_133_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_sync_generator_8cpp_source.html"><span class="icondoc"></span></a><b>SyncGenerator.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_134_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_sync_generator_8h_source.html"><span class="icondoc"></span></a><b>SyncGenerator.h</b></td><td class="desc"></td></tr> +<tr id="row_0_134_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_sync_generator_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_sync_generator_8h.html" target="_self">SyncGenerator.h</a></td><td class="desc"></td></tr> <tr id="row_0_135_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_sync_machine_form_8cpp_source.html"><span class="icondoc"></span></a><b>SyncMachineForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_136_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_sync_machine_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_sync_machine_form_8h.html" target="_self">SyncMachineForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_137_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_sync_motor_8cpp_source.html"><span class="icondoc"></span></a><b>SyncMotor.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_138_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_sync_motor_8h_source.html"><span class="icondoc"></span></a><b>SyncMotor.h</b></td><td class="desc"></td></tr> +<tr id="row_0_138_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_sync_motor_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_sync_motor_8h.html" target="_self">SyncMotor.h</a></td><td class="desc"></td></tr> <tr id="row_0_139_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_text_8cpp_source.html"><span class="icondoc"></span></a><b>Text.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_140_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_text_8h_source.html"><span class="icondoc"></span></a><b>Text.h</b></td><td class="desc"></td></tr> +<tr id="row_0_140_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_text_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_text_8h.html" target="_self">Text.h</a></td><td class="desc"></td></tr> <tr id="row_0_141_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_text_form_8cpp_source.html"><span class="icondoc"></span></a><b>TextForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_142_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_text_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_text_form_8h.html" target="_self">TextForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_143_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_transfer_function_8cpp_source.html"><span class="icondoc"></span></a><b>TransferFunction.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_144_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_transfer_function_8h_source.html"><span class="icondoc"></span></a><b>TransferFunction.h</b></td><td class="desc"></td></tr> +<tr id="row_0_144_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_transfer_function_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_transfer_function_8h.html" target="_self">TransferFunction.h</a></td><td class="desc"></td></tr> <tr id="row_0_145_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_transfer_function_form_8cpp_source.html"><span class="icondoc"></span></a><b>TransferFunctionForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_146_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_transfer_function_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_transfer_function_form_8h.html" target="_self">TransferFunctionForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_147_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_transformer_8cpp_source.html"><span class="icondoc"></span></a><b>Transformer.cpp</b></td><td class="desc"></td></tr> -<tr id="row_0_148_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_transformer_8h_source.html"><span class="icondoc"></span></a><b>Transformer.h</b></td><td class="desc"></td></tr> +<tr id="row_0_148_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_transformer_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_transformer_8h.html" target="_self">Transformer.h</a></td><td class="desc"></td></tr> <tr id="row_0_149_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_transformer_form_8cpp_source.html"><span class="icondoc"></span></a><b>TransformerForm.cpp</b></td><td class="desc"></td></tr> <tr id="row_0_150_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_transformer_form_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_transformer_form_8h.html" target="_self">TransformerForm.h</a></td><td class="desc"></td></tr> <tr id="row_0_151_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><a href="_workspace_8cpp_source.html"><span class="icondoc"></span></a><b>Workspace.cpp</b></td><td class="desc"></td></tr> diff --git a/docs/doxygen/html/functions_c.html b/docs/doxygen/html/functions_c.html index 9313eeb..9d54d8a 100644 --- a/docs/doxygen/html/functions_c.html +++ b/docs/doxygen/html/functions_c.html @@ -97,6 +97,9 @@ $(document).ready(function(){initNavTree('functions_c.html','');}); <li>CalculatePowerFlowPts() : <a class="el" href="class_power_element.html#a6c656ef223d36e96b19b0a9ec2115e9e">PowerElement</a> </li> +<li>CalculateSpaceState() +: <a class="el" href="class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a">TransferFunction</a> +</li> <li>consolidate() : <a class="el" href="classwx_g_l_number_renderer.html#aa79114bda6e5e4c3db4b8aeeb5f272c4">wxGLNumberRenderer</a> , <a class="el" href="classwx_g_l_string.html#a54a67012ceb50ee50696c0c1fa0a7b55">wxGLString</a> diff --git a/docs/doxygen/html/functions_func_c.html b/docs/doxygen/html/functions_func_c.html index 9663c8b..706a777 100644 --- a/docs/doxygen/html/functions_func_c.html +++ b/docs/doxygen/html/functions_func_c.html @@ -94,6 +94,9 @@ $(document).ready(function(){initNavTree('functions_func_c.html','');}); <li>CalculatePowerFlowPts() : <a class="el" href="class_power_element.html#a6c656ef223d36e96b19b0a9ec2115e9e">PowerElement</a> </li> +<li>CalculateSpaceState() +: <a class="el" href="class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a">TransferFunction</a> +</li> <li>consolidate() : <a class="el" href="classwx_g_l_number_renderer.html#aa79114bda6e5e4c3db4b8aeeb5f272c4">wxGLNumberRenderer</a> , <a class="el" href="classwx_g_l_string.html#a54a67012ceb50ee50696c0c1fa0a7b55">wxGLString</a> diff --git a/docs/doxygen/html/functions_func_s.html b/docs/doxygen/html/functions_func_s.html index 2de3bc7..79aa81a 100644 --- a/docs/doxygen/html/functions_func_s.html +++ b/docs/doxygen/html/functions_func_s.html @@ -183,7 +183,10 @@ $(document).ready(function(){initNavTree('functions_func_s.html','');}); : <a class="el" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">Element</a> </li> <li>Solve() -: <a class="el" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">RateLimiter</a> +: <a class="el" href="class_exponential.html#ae8e635b32b5d6a8226a3654aa639094f">Exponential</a> +, <a class="el" href="class_gain.html#a282cab6d339aa89a35c775bbea2aa117">Gain</a> +, <a class="el" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">RateLimiter</a> +, <a class="el" href="class_transfer_function.html#ab23ed101f7d4e953e4df0d4d480d9798">TransferFunction</a> </li> <li>StartMove() : <a class="el" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64">Branch</a> diff --git a/docs/doxygen/html/functions_s.html b/docs/doxygen/html/functions_s.html index 0a6ad94..b03c704 100644 --- a/docs/doxygen/html/functions_s.html +++ b/docs/doxygen/html/functions_s.html @@ -183,7 +183,10 @@ $(document).ready(function(){initNavTree('functions_s.html','');}); : <a class="el" href="class_element.html#ab8bf35b4a205fa58772402cea7fad89c">Element</a> </li> <li>Solve() -: <a class="el" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">RateLimiter</a> +: <a class="el" href="class_exponential.html#ae8e635b32b5d6a8226a3654aa639094f">Exponential</a> +, <a class="el" href="class_gain.html#a282cab6d339aa89a35c775bbea2aa117">Gain</a> +, <a class="el" href="class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29">RateLimiter</a> +, <a class="el" href="class_transfer_function.html#ab23ed101f7d4e953e4df0d4d480d9798">TransferFunction</a> </li> <li>StartMove() : <a class="el" href="class_branch.html#a947cec45fcdc78d01eaabe19d23daf64">Branch</a> diff --git a/docs/doxygen/html/hierarchy.html b/docs/doxygen/html/hierarchy.html index 8d0d95e..0ddc0a9 100644 --- a/docs/doxygen/html/hierarchy.html +++ b/docs/doxygen/html/hierarchy.html @@ -95,54 +95,54 @@ $(document).ready(function(){initNavTree('hierarchy.html','');}); <tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_capacitor_electrical_data.html" target="_self">CapacitorElectricalData</a></td><td class="desc"></td></tr> <tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_control_element_container.html" target="_self">ControlElementContainer</a></td><td class="desc">Class that can contain all control elements. Can identify (using RTTI) the elements from a generic list and store them separately </td></tr> <tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_control_element_solver.html" target="_self">ControlElementSolver</a></td><td class="desc">Solves in the time the control system. Can solve the control system directly from a <a class="el" href="class_control_editor.html">ControlEditor</a> or from a ControlEditorElement </td></tr> -<tr id="row_5_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_5_" class="arrow" onclick="toggleFolder('5_')">▼</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_electric_calculation.html" target="_self">ElectricCalculation</a></td><td class="desc"></td></tr> -<tr id="row_5_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_electromechanical.html" target="_self">Electromechanical</a></td><td class="desc"></td></tr> -<tr id="row_5_1_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_fault.html" target="_self">Fault</a></td><td class="desc"></td></tr> -<tr id="row_5_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_power_flow.html" target="_self">PowerFlow</a></td><td class="desc"></td></tr> -<tr id="row_6_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_6_" class="arrow" onclick="toggleFolder('6_')">▼</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_element.html" target="_self">Element</a></td><td class="desc"></td></tr> +<tr id="row_5_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_5_" class="arrow" onclick="toggleFolder('5_')">▼</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_electric_calculation.html" target="_self">ElectricCalculation</a></td><td class="desc">Base class of electric calculations, with general methods </td></tr> +<tr id="row_5_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_electromechanical.html" target="_self">Electromechanical</a></td><td class="desc">Calculates the electromechanical transient based on disturbances (e.g. system fault) </td></tr> +<tr id="row_5_1_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_fault.html" target="_self">Fault</a></td><td class="desc">Calculate the fault of the system and update the elements data </td></tr> +<tr id="row_5_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_power_flow.html" target="_self">PowerFlow</a></td><td class="desc">Calculate the power flow </td></tr> +<tr id="row_6_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_6_" class="arrow" onclick="toggleFolder('6_')">▼</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_element.html" target="_self">Element</a></td><td class="desc">Base class of all elements of the program. This class is responsible for manage graphical and his data </td></tr> <tr id="row_6_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_6_0_" class="arrow" onclick="toggleFolder('6_0_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_control_element.html" target="_self">ControlElement</a></td><td class="desc"></td></tr> <tr id="row_6_0_0_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_connection_line.html" target="_self">ConnectionLine</a></td><td class="desc">Connection between two control elements or other connection line and an element </td></tr> <tr id="row_6_0_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_constant.html" target="_self">Constant</a></td><td class="desc">A control element that provides a constant value </td></tr> -<tr id="row_6_0_2_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_exponential.html" target="_self">Exponential</a></td><td class="desc">Generates an output following an exponential function. \( output = A\cdot e^{B\cdot input} \) </td></tr> -<tr id="row_6_0_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_gain.html" target="_self">Gain</a></td><td class="desc">Provide an output multiplying the input by a constant. \( output = K \cdot input \) </td></tr> +<tr id="row_6_0_2_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_exponential.html" target="_self">Exponential</a></td><td class="desc">Generates an output following an exponential function </td></tr> +<tr id="row_6_0_3_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_gain.html" target="_self">Gain</a></td><td class="desc">Provide an output multiplying the input by a constant </td></tr> <tr id="row_6_0_4_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_i_o_control.html" target="_self">IOControl</a></td><td class="desc">Provides the communication with the power element </td></tr> <tr id="row_6_0_5_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_limiter.html" target="_self">Limiter</a></td><td class="desc">Limits the input value by superior and inferior values </td></tr> <tr id="row_6_0_6_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_multiplier.html" target="_self">Multiplier</a></td><td class="desc">Multiplies two inputs </td></tr> <tr id="row_6_0_7_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_rate_limiter.html" target="_self">RateLimiter</a></td><td class="desc">Limits the rising and/or falling rate.<br /> </td></tr> -<tr id="row_6_0_8_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sum.html" target="_self">Sum</a></td><td class="desc"></td></tr> -<tr id="row_6_0_9_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_transfer_function.html" target="_self">TransferFunction</a></td><td class="desc"></td></tr> -<tr id="row_6_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_6_1_" class="arrow" onclick="toggleFolder('6_1_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_graphical_element.html" target="_self">GraphicalElement</a></td><td class="desc"></td></tr> -<tr id="row_6_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_text.html" target="_self">Text</a></td><td class="desc"></td></tr> -<tr id="row_6_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_6_2_" class="arrow" onclick="toggleFolder('6_2_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_power_element.html" target="_self">PowerElement</a></td><td class="desc"></td></tr> -<tr id="row_6_2_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span id="arr_6_2_0_" class="arrow" onclick="toggleFolder('6_2_0_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_branch.html" target="_self">Branch</a></td><td class="desc"></td></tr> -<tr id="row_6_2_0_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_line.html" target="_self">Line</a></td><td class="desc"></td></tr> -<tr id="row_6_2_0_1_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_transformer.html" target="_self">Transformer</a></td><td class="desc"></td></tr> -<tr id="row_6_2_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_bus.html" target="_self">Bus</a></td><td class="desc"></td></tr> -<tr id="row_6_2_2_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span id="arr_6_2_2_" class="arrow" onclick="toggleFolder('6_2_2_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_machines.html" target="_self">Machines</a></td><td class="desc"></td></tr> -<tr id="row_6_2_2_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_ind_motor.html" target="_self">IndMotor</a></td><td class="desc"></td></tr> -<tr id="row_6_2_2_1_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sync_generator.html" target="_self">SyncGenerator</a></td><td class="desc"></td></tr> -<tr id="row_6_2_2_2_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sync_motor.html" target="_self">SyncMotor</a></td><td class="desc"></td></tr> -<tr id="row_6_2_3_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span id="arr_6_2_3_" class="arrow" onclick="toggleFolder('6_2_3_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_shunt.html" target="_self">Shunt</a></td><td class="desc"></td></tr> -<tr id="row_6_2_3_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_capacitor.html" target="_self">Capacitor</a></td><td class="desc"></td></tr> -<tr id="row_6_2_3_1_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_inductor.html" target="_self">Inductor</a></td><td class="desc"></td></tr> -<tr id="row_6_2_3_2_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_load.html" target="_self">Load</a></td><td class="desc"></td></tr> +<tr id="row_6_0_8_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sum.html" target="_self">Sum</a></td><td class="desc"><a class="el" href="class_sum.html" title="Sum the all inputs (can choose the input signal). ">Sum</a> the all inputs (can choose the input signal) </td></tr> +<tr id="row_6_0_9_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_transfer_function.html" target="_self">TransferFunction</a></td><td class="desc">Calculates the time response by a frequency domain transfer function </td></tr> +<tr id="row_6_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_6_1_" class="arrow" onclick="toggleFolder('6_1_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_graphical_element.html" target="_self">GraphicalElement</a></td><td class="desc">Abstract class for graphical elements shown with power elements in workspace </td></tr> +<tr id="row_6_1_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_text.html" target="_self">Text</a></td><td class="desc"><a class="el" href="class_element.html" title="Base class of all elements of the program. This class is responsible for manage graphical and his dat...">Element</a> that shows power element informations in workspace </td></tr> +<tr id="row_6_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_6_2_" class="arrow" onclick="toggleFolder('6_2_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_power_element.html" target="_self">PowerElement</a></td><td class="desc">Abstract class of power elements </td></tr> +<tr id="row_6_2_0_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span id="arr_6_2_0_" class="arrow" onclick="toggleFolder('6_2_0_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_branch.html" target="_self">Branch</a></td><td class="desc">Abstract class for branch power elements </td></tr> +<tr id="row_6_2_0_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_line.html" target="_self">Line</a></td><td class="desc">Power line element </td></tr> +<tr id="row_6_2_0_1_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_transformer.html" target="_self">Transformer</a></td><td class="desc">Two-winding transformer power element </td></tr> +<tr id="row_6_2_1_" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_bus.html" target="_self">Bus</a></td><td class="desc"><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> for power elements. All others power elements are connected through this </td></tr> +<tr id="row_6_2_2_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span id="arr_6_2_2_" class="arrow" onclick="toggleFolder('6_2_2_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_machines.html" target="_self">Machines</a></td><td class="desc">Abstract class for rotary machines power elements </td></tr> +<tr id="row_6_2_2_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_ind_motor.html" target="_self">IndMotor</a></td><td class="desc">Induction motor power element </td></tr> +<tr id="row_6_2_2_1_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sync_generator.html" target="_self">SyncGenerator</a></td><td class="desc">Synchronous generator power element </td></tr> +<tr id="row_6_2_2_2_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_sync_motor.html" target="_self">SyncMotor</a></td><td class="desc">Synchronous motor (synchronous compensator) power element </td></tr> +<tr id="row_6_2_3_" style="display:none;"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span id="arr_6_2_3_" class="arrow" onclick="toggleFolder('6_2_3_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_shunt.html" target="_self">Shunt</a></td><td class="desc">Abstract class for shunt power elements </td></tr> +<tr id="row_6_2_3_0_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_capacitor.html" target="_self">Capacitor</a></td><td class="desc"><a class="el" href="class_shunt.html" title="Abstract class for shunt power elements. ">Shunt</a> capactior power element </td></tr> +<tr id="row_6_2_3_1_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_inductor.html" target="_self">Inductor</a></td><td class="desc"><a class="el" href="class_inductor.html" title="Inductor shunt power element. ">Inductor</a> shunt power element </td></tr> +<tr id="row_6_2_3_2_" style="display:none;"><td class="entry"><span style="width:64px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_load.html" target="_self">Load</a></td><td class="desc">Loas shunt power element </td></tr> <tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_element_plot_data.html" target="_self">ElementPlotData</a></td><td class="desc"></td></tr> <tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_elements_lists.html" target="_self">ElementsLists</a></td><td class="desc"></td></tr> <tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_file_handing.html" target="_self">FileHanding</a></td><td class="desc">Save and opens the projects created on disk </td></tr> <tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_general_data.html" target="_self">GeneralData</a></td><td class="desc"></td></tr> <tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_ind_motor_electrical_data.html" target="_self">IndMotorElectricalData</a></td><td class="desc"></td></tr> <tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_inductor_electrical_data.html" target="_self">InductorElectricalData</a></td><td class="desc"></td></tr> -<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_integration_constant.html" target="_self">IntegrationConstant</a></td><td class="desc"></td></tr> +<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_integration_constant.html" target="_self">IntegrationConstant</a></td><td class="desc">Integration constants to calculate dynamic elements through trapezoidal integration method </td></tr> <tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_line_electrical_data.html" target="_self">LineElectricalData</a></td><td class="desc"></td></tr> <tr id="row_15_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_load_electrical_data.html" target="_self">LoadElectricalData</a></td><td class="desc"></td></tr> <tr id="row_16_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_node.html" target="_self">Node</a></td><td class="desc"><a class="el" href="class_node.html" title="Node of a control element. This class manages the user interaction with the connection and control el...">Node</a> of a control element. This class manages the user interaction with the connection and control elements </td></tr> -<tr id="row_17_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_open_g_l_colour.html" target="_self">OpenGLColour</a></td><td class="desc"></td></tr> -<tr id="row_18_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_properties_data.html" target="_self">PropertiesData</a></td><td class="desc"></td></tr> +<tr id="row_17_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_open_g_l_colour.html" target="_self">OpenGLColour</a></td><td class="desc">Class to manage color of OpenGL </td></tr> +<tr id="row_18_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_properties_data.html" target="_self">PropertiesData</a></td><td class="desc">General and simulation data manager </td></tr> <tr id="row_19_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_reactive_limits.html" target="_self">ReactiveLimits</a></td><td class="desc"></td></tr> <tr id="row_20_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_simulation_data.html" target="_self">SimulationData</a></td><td class="desc"></td></tr> <tr id="row_21_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_transfer_function_1_1_space_state.html" target="_self">TransferFunction::SpaceState</a></td><td class="desc"></td></tr> -<tr id="row_22_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_switching_data.html" target="_self">SwitchingData</a></td><td class="desc"></td></tr> +<tr id="row_22_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_switching_data.html" target="_self">SwitchingData</a></td><td class="desc">Switching data of power elements </td></tr> <tr id="row_23_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_sync_generator_electrical_data.html" target="_self">SyncGeneratorElectricalData</a></td><td class="desc"></td></tr> <tr id="row_24_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_sync_machine_model_data.html" target="_self">SyncMachineModelData</a></td><td class="desc">Synchronous machine data for different models </td></tr> <tr id="row_25_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="struct_sync_motor_electrical_data.html" target="_self">SyncMotorElectricalData</a></td><td class="desc"></td></tr> @@ -154,7 +154,7 @@ $(document).ready(function(){initNavTree('hierarchy.html','');}); <tr id="row_29_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_29_" class="arrow" onclick="toggleFolder('29_')">▼</span><span class="icona"><span class="icon">C</span></span><b>wxApp</b></td><td class="desc"></td></tr> <tr id="row_29_0_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_main_app.html" target="_self">MainApp</a></td><td class="desc"></td></tr> <tr id="row_30_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_30_" class="arrow" onclick="toggleFolder('30_')">▼</span><span class="icona"><span class="icon">C</span></span><b>wxDataObjectSimple</b></td><td class="desc"></td></tr> -<tr id="row_30_0_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_element_data_object.html" target="_self">ElementDataObject</a></td><td class="desc"></td></tr> +<tr id="row_30_0_"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_element_data_object.html" target="_self">ElementDataObject</a></td><td class="desc">Class to store the elements in the clipboard </td></tr> <tr id="row_31_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_31_" class="arrow" onclick="toggleFolder('31_')">▼</span><span class="icona"><span class="icon">C</span></span><b>wxDialog</b></td><td class="desc"></td></tr> <tr id="row_31_0_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span id="arr_31_0_" class="arrow" onclick="toggleFolder('31_0_')">►</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_about_form_base.html" target="_self">AboutFormBase</a></td><td class="desc"></td></tr> <tr id="row_31_0_0_" class="even" style="display:none;"><td class="entry"><span style="width:48px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_about_form.html" target="_self">AboutForm</a></td><td class="desc">Form to show some informations </td></tr> @@ -218,7 +218,7 @@ $(document).ready(function(){initNavTree('hierarchy.html','');}); <tr id="row_36_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_36_" class="arrow" onclick="toggleFolder('36_')">▼</span><span class="icona"><span class="icon">C</span></span><b>wxString</b></td><td class="desc"></td></tr> <tr id="row_36_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classwx_g_l_string.html" target="_self">wxGLString</a></td><td class="desc"></td></tr> <tr id="row_37_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_37_" class="arrow" onclick="toggleFolder('37_')">▼</span><span class="icona"><span class="icon">C</span></span><b>wxTreeItemData</b></td><td class="desc"></td></tr> -<tr id="row_37_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_plot_data.html" target="_self">PlotData</a></td><td class="desc"></td></tr> +<tr id="row_37_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_plot_data.html" target="_self">PlotData</a></td><td class="desc">This class is responsible to manage the graphical data of electromechanical result to be plotted on chart viewer </td></tr> <tr id="row_38_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_38_" class="arrow" onclick="toggleFolder('38_')">▼</span><span class="icona"><span class="icon">C</span></span><b>wxWindow</b></td><td class="desc"></td></tr> <tr id="row_38_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_control_element_button.html" target="_self">ControlElementButton</a></td><td class="desc">This class is responsible to handle the user interaction with control elements </td></tr> </table> diff --git a/docs/doxygen/html/main_8cpp_source.html b/docs/doxygen/html/main_8cpp_source.html index b9759c9..02d7487 100644 --- a/docs/doxygen/html/main_8cpp_source.html +++ b/docs/doxygen/html/main_8cpp_source.html @@ -88,7 +88,8 @@ $(document).ready(function(){initNavTree('main_8cpp_source.html','');}); <div class="title">main.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#include <wx/app.h></span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include <wx/event.h></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include <wx/image.h></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <wx/stdpaths.h></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <wx/textfile.h></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/cmdline.h></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "<a class="code" href="_main_frame_8h.html">MainFrame.h</a>"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "PropertiesData.h"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Define the MainApp</span></div><div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="class_main_app.html"> 12</a></span> <span class="keyword">class </span><a class="code" href="class_main_app.html">MainApp</a> : <span class="keyword">public</span> wxApp</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> {</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <a class="code" href="class_main_app.html">MainApp</a>() {}</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_main_app.html">MainApp</a>() {}</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">bool</span> LoadInitFile(<a class="code" href="class_properties_data.html">PropertiesData</a>* propertiesData)</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  {</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  wxFileName fn(wxStandardPaths::Get().GetExecutablePath());</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  wxTextFile file(fn.GetPath() + <span class="stringliteral">"\\config.ini"</span>);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keyword">auto</span> data = propertiesData->GetGeneralPropertiesData();</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">if</span>(!file.Create()) {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordflow">if</span>(!file.Open()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString line;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">for</span>(line = file.GetFirstLine(); !file.Eof(); line = file.GetNextLine()) {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  wxString tag = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  wxString tagValue = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">bool</span> parseValue = <span class="keyword">false</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < line.Len(); ++i) {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">if</span>(line[i] == <span class="charliteral">'='</span>) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  parseValue = <span class="keyword">true</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">if</span>(parseValue)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  tagValue += line[i];</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  tag += line[i];</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">// Language</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span>(tag == <span class="stringliteral">"lang"</span>) {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span>(tagValue == <span class="stringliteral">"pt-br"</span> || tagValue == <span class="stringliteral">"pt"</span>) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  data.language = wxLANGUAGE_PORTUGUESE_BRAZILIAN;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagValue == <span class="stringliteral">"en"</span> || tagValue == <span class="stringliteral">"en-us"</span> || tagValue == <span class="stringliteral">"en-uk"</span>) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  data.language = wxLANGUAGE_ENGLISH;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span>(tag == <span class="stringliteral">"theme"</span>) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>(tagValue == <span class="stringliteral">"light"</span>) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  data.theme = THEME_LIGHT;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagValue == <span class="stringliteral">"dark"</span>) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  data.theme = THEME_DARK;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  file.Close();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  } <span class="keywordflow">else</span> { <span class="comment">// Create default init file.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>(!file.Open()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// Default parameters.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  file.AddLine(<span class="stringliteral">"lang=en"</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  file.AddLine(<span class="stringliteral">"theme=light"</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  file.Write();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  file.Close();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  data.language = wxLANGUAGE_ENGLISH;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  data.theme = THEME_LIGHT;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  propertiesData->SetGeneralPropertiesData(data);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  propertiesData->SetGeneralPropertiesData(data);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">void</span> LoadCatalogs(wxLocale* locale, <a class="code" href="class_properties_data.html">PropertiesData</a>* propertiesData)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  locale->Init(propertiesData->GetGeneralPropertiesData().language, wxLOCALE_DONT_LOAD_DEFAULT);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  wxFileName fn(wxStandardPaths::Get().GetExecutablePath());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  wxString langPath = fn.GetPath() + <span class="stringliteral">"\\..\\data\\lang"</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  locale->AddCatalogLookupPathPrefix(langPath);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Load translation catalogs.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  locale->AddCatalog(wxT(<span class="stringliteral">"pt_BR"</span>), wxLANGUAGE_PORTUGUESE_BRAZILIAN);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OnInit()</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Add image handlers</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  wxImage::AddHandler(<span class="keyword">new</span> wxPNGHandler);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  wxImage::AddHandler(<span class="keyword">new</span> wxJPEGHandler);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>* propertiesData = <span class="keyword">new</span> <a class="code" href="class_properties_data.html">PropertiesData</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  LoadInitFile(propertiesData);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  wxLocale* locale = <span class="keyword">new</span> wxLocale();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  LoadCatalogs(locale, propertiesData);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  wxString openFilePath = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  wxCmdLineParser cmdLineParser(wxApp::argc, wxApp::argv);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  cmdLineParser.AddParam(<span class="stringliteral">""</span>, wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(cmdLineParser.Parse() == 0) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  wxCmdLineArgs args = cmdLineParser.GetArguments();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = args.begin(), itEnd = args.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span>(it->GetKind() == wxCMD_LINE_PARAM) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  openFilePath = it->GetStrVal();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="class_main_frame.html">MainFrame</a>* mainFrame = <span class="keyword">new</span> <a class="code" href="class_main_frame.html">MainFrame</a>(NULL, locale, propertiesData, openFilePath);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  mainFrame->SetIcon(wxICON(aaaaprogicon));</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  SetTopWindow(mainFrame);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> GetTopWindow()->Show();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> };</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> DECLARE_APP(<a class="code" href="class_main_app.html">MainApp</a>)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> IMPLEMENT_APP(<a class="code" href="class_main_app.html">MainApp</a>)</div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00057">PropertiesData.h:57</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#include <wx/app.h></span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include <wx/event.h></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include <wx/image.h></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <wx/stdpaths.h></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <wx/textfile.h></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <wx/cmdline.h></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "<a class="code" href="_main_frame_8h.html">MainFrame.h</a>"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "<a class="code" href="_properties_data_8h.html">PropertiesData.h</a>"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Define the MainApp</span></div><div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="class_main_app.html"> 12</a></span> <span class="keyword">class </span><a class="code" href="class_main_app.html">MainApp</a> : <span class="keyword">public</span> wxApp</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> {</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <a class="code" href="class_main_app.html">MainApp</a>() {}</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keyword">virtual</span> ~<a class="code" href="class_main_app.html">MainApp</a>() {}</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordtype">bool</span> LoadInitFile(<a class="code" href="class_properties_data.html">PropertiesData</a>* propertiesData)</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  {</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  wxFileName fn(wxStandardPaths::Get().GetExecutablePath());</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  wxTextFile file(fn.GetPath() + <span class="stringliteral">"\\config.ini"</span>);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keyword">auto</span> data = propertiesData->GetGeneralPropertiesData();</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">if</span>(!file.Create()) {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keywordflow">if</span>(!file.Open()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  wxString line;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">for</span>(line = file.GetFirstLine(); !file.Eof(); line = file.GetNextLine()) {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  wxString tag = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  wxString tagValue = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">bool</span> parseValue = <span class="keyword">false</span>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i < line.Len(); ++i) {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">if</span>(line[i] == <span class="charliteral">'='</span>) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  parseValue = <span class="keyword">true</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">if</span>(parseValue)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  tagValue += line[i];</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  tag += line[i];</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">// Language</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span>(tag == <span class="stringliteral">"lang"</span>) {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span>(tagValue == <span class="stringliteral">"pt-br"</span> || tagValue == <span class="stringliteral">"pt"</span>) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  data.language = wxLANGUAGE_PORTUGUESE_BRAZILIAN;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagValue == <span class="stringliteral">"en"</span> || tagValue == <span class="stringliteral">"en-us"</span> || tagValue == <span class="stringliteral">"en-uk"</span>) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  data.language = wxLANGUAGE_ENGLISH;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">if</span>(tag == <span class="stringliteral">"theme"</span>) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span>(tagValue == <span class="stringliteral">"light"</span>) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  data.theme = THEME_LIGHT;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tagValue == <span class="stringliteral">"dark"</span>) {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  data.theme = THEME_DARK;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  file.Close();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  } <span class="keywordflow">else</span> { <span class="comment">// Create default init file.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">if</span>(!file.Open()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// Default parameters.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  file.AddLine(<span class="stringliteral">"lang=en"</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  file.AddLine(<span class="stringliteral">"theme=light"</span>);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  file.Write();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  file.Close();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  data.language = wxLANGUAGE_ENGLISH;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  data.theme = THEME_LIGHT;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  propertiesData->SetGeneralPropertiesData(data);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  propertiesData->SetGeneralPropertiesData(data);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">void</span> LoadCatalogs(wxLocale* locale, <a class="code" href="class_properties_data.html">PropertiesData</a>* propertiesData)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  locale->Init(propertiesData->GetGeneralPropertiesData().language, wxLOCALE_DONT_LOAD_DEFAULT);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  wxFileName fn(wxStandardPaths::Get().GetExecutablePath());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  wxString langPath = fn.GetPath() + <span class="stringliteral">"\\..\\data\\lang"</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  locale->AddCatalogLookupPathPrefix(langPath);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Load translation catalogs.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  locale->AddCatalog(wxT(<span class="stringliteral">"pt_BR"</span>), wxLANGUAGE_PORTUGUESE_BRAZILIAN);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> OnInit()</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// Add image handlers</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  wxImage::AddHandler(<span class="keyword">new</span> wxPNGHandler);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  wxImage::AddHandler(<span class="keyword">new</span> wxJPEGHandler);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <a class="code" href="class_properties_data.html">PropertiesData</a>* propertiesData = <span class="keyword">new</span> <a class="code" href="class_properties_data.html">PropertiesData</a>();</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  LoadInitFile(propertiesData);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  wxLocale* locale = <span class="keyword">new</span> wxLocale();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  LoadCatalogs(locale, propertiesData);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  wxString openFilePath = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  wxCmdLineParser cmdLineParser(wxApp::argc, wxApp::argv);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  cmdLineParser.AddParam(<span class="stringliteral">""</span>, wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(cmdLineParser.Parse() == 0) {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  wxCmdLineArgs args = cmdLineParser.GetArguments();</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">for</span>(<span class="keyword">auto</span> it = args.begin(), itEnd = args.end(); it != itEnd; ++it) {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span>(it->GetKind() == wxCMD_LINE_PARAM) {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  openFilePath = it->GetStrVal();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="class_main_frame.html">MainFrame</a>* mainFrame = <span class="keyword">new</span> <a class="code" href="class_main_frame.html">MainFrame</a>(NULL, locale, propertiesData, openFilePath);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  mainFrame->SetIcon(wxICON(aaaaprogicon));</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  SetTopWindow(mainFrame);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> GetTopWindow()->Show();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> };</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> DECLARE_APP(<a class="code" href="class_main_app.html">MainApp</a>)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> IMPLEMENT_APP(<a class="code" href="class_main_app.html">MainApp</a>)</div><div class="ttc" id="class_properties_data_html"><div class="ttname"><a href="class_properties_data.html">PropertiesData</a></div><div class="ttdoc">General and simulation data manager. </div><div class="ttdef"><b>Definition:</b> <a href="_properties_data_8h_source.html#l00064">PropertiesData.h:64</a></div></div> +<div class="ttc" id="_properties_data_8h_html"><div class="ttname"><a href="_properties_data_8h.html">PropertiesData.h</a></div></div> <div class="ttc" id="_main_frame_8h_html"><div class="ttname"><a href="_main_frame_8h.html">MainFrame.h</a></div></div> <div class="ttc" id="class_main_frame_html"><div class="ttname"><a href="class_main_frame.html">MainFrame</a></div><div class="ttdoc">Main frame of the program. This class manage the ribbon menu and the notebook behavior. </div><div class="ttdef"><b>Definition:</b> <a href="_main_frame_8h_source.html#l00057">MainFrame.h:57</a></div></div> <div class="ttc" id="class_main_app_html"><div class="ttname"><a href="class_main_app.html">MainApp</a></div><div class="ttdef"><b>Definition:</b> <a href="main_8cpp_source.html#l00012">main.cpp:12</a></div></div> diff --git a/docs/doxygen/html/navtreedata.js b/docs/doxygen/html/navtreedata.js index f3c89b9..87a3abe 100644 --- a/docs/doxygen/html/navtreedata.js +++ b/docs/doxygen/html/navtreedata.js @@ -25,19 +25,20 @@ var NAVTREE = var NAVTREEINDEX = [ "_about_form_8cpp_source.html", -"_simulations_settings_form_8h_source.html", -"class_camera.html#aefeb0e4d35db499c1049173f1c0be1c2", -"class_control_editor_base.html", -"class_data_report_base.html#af7230eab205cf660e465b5a4ed36f41c", -"class_exponential_form.html#a3c0b865be48a390d39b42a552afdd711", -"class_generator_stab_form_base.html#ab83eed913a74588eeaec593e777d6903", -"class_line_form.html#a3896cd6a6cc5500fe1935aa9b16d37ce", -"class_main_frame_base.html#a869092abc9913bb995eb36ec69db0405", -"class_reactive_shunt_element_form_base.html#a2eabee46e0b04d92086a0d0f21e3b10e", -"class_sync_machine_form_base.html#a0580ac7326c742ffe05d7791d83a52d7", -"class_text_texture.html#a028855c450db4925652071c212cce8c7", -"class_workspace.html#a8b7645ec6641e9eff52f9d6b8e12b84e", -"struct_simulation_data.html#af0ca3cdcc810fcba377e5c6e2bcd71b5" +"_properties_data_8h.html#a22c433d87328b2b1a796559b51b82cc5a36b54867355898cdf8184bc1b1b1ab64", +"class_bus_form_base.html#a8731cdb29c22002ed2d63bceaba322a5", +"class_constant_form_base.html#ad9296d05ec4b36ef59108bf72ddfdaca", +"class_data_report.html#a65ae7767572792800630dbff4e1c0de7", +"class_element_data_object.html#a19995ba1b03a9566352e5bdf44d1370b", +"class_generator_stab_form_base.html#a2bda5575654a49d342aefb1e4c8fbaef", +"class_limiter_form.html", +"class_main_frame.html#a4a1c9ab859e5fd8a4c76ea7e10276181", +"class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29", +"class_switching_form_base.html#a12a2da9f3c7ed16f5e9965c13d166f96", +"class_text_form_base.html#a6e8c2c55fcac20adba14d0ee92ee6560", +"class_transformer_form_base.html#ae7a24e53da32b8caf67fc5ef39618743", +"struct_general_data.html#ab52356d45c62ade32d080b3244f0b3ef", +"struct_transformer_electrical_data.html#a8a90bbbcefecfe59505d86003354afdc" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/docs/doxygen/html/navtreeindex0.js b/docs/doxygen/html/navtreeindex0.js index baa673c..0929c65 100644 --- a/docs/doxygen/html/navtreeindex0.js +++ b/docs/doxygen/html/navtreeindex0.js @@ -6,8 +6,10 @@ var NAVTREEINDEX0 = "_art_metro_8cpp_source.html":[1,0,0,2], "_art_metro_8h_source.html":[1,0,0,3], "_branch_8cpp_source.html":[1,0,0,4], +"_branch_8h.html":[1,0,0,5], "_branch_8h_source.html":[1,0,0,5], "_bus_8cpp_source.html":[1,0,0,6], +"_bus_8h.html":[1,0,0,7], "_bus_8h_source.html":[1,0,0,7], "_bus_form_8cpp_source.html":[1,0,0,8], "_bus_form_8h.html":[1,0,0,9], @@ -17,6 +19,7 @@ var NAVTREEINDEX0 = "_camera_8h.html":[1,0,0,12], "_camera_8h_source.html":[1,0,0,12], "_capacitor_8cpp_source.html":[1,0,0,13], +"_capacitor_8h.html":[1,0,0,14], "_capacitor_8h_source.html":[1,0,0,14], "_chart_view_8cpp_source.html":[1,0,0,15], "_chart_view_8h.html":[1,0,0,16], @@ -108,11 +111,13 @@ var NAVTREEINDEX0 = "_element_8h.html#a7b88da333c092757d91d7492dfa8e316af6c9b66260adb71ded1407f62d5eceb0":[1,0,0,50,3,1], "_element_8h_source.html":[1,0,0,50], "_element_data_object_8cpp_source.html":[1,0,0,51], +"_element_data_object_8h.html":[1,0,0,52], "_element_data_object_8h_source.html":[1,0,0,52], "_element_form_8cpp_source.html":[1,0,0,53], "_element_form_8h_source.html":[1,0,0,54], "_element_form_bitmaps_8cpp_source.html":[1,0,0,55], "_element_plot_data_8cpp_source.html":[1,0,0,56], +"_element_plot_data_8h.html":[1,0,0,57], "_element_plot_data_8h_source.html":[1,0,0,57], "_exponential_8cpp_source.html":[1,0,0,58], "_exponential_8h.html":[1,0,0,59], @@ -139,6 +144,7 @@ var NAVTREEINDEX0 = "_generator_stab_form_8h.html":[1,0,0,73], "_generator_stab_form_8h_source.html":[1,0,0,73], "_graphical_element_8cpp_source.html":[1,0,0,74], +"_graphical_element_8h.html":[1,0,0,75], "_graphical_element_8h_source.html":[1,0,0,75], "_i_o_control_8cpp_source.html":[1,0,0,82], "_i_o_control_8h.html":[1,0,0,83], @@ -147,11 +153,13 @@ var NAVTREEINDEX0 = "_i_o_control_form_8h.html":[1,0,0,85], "_i_o_control_form_8h_source.html":[1,0,0,85], "_ind_motor_8cpp_source.html":[1,0,0,76], +"_ind_motor_8h.html":[1,0,0,77], "_ind_motor_8h_source.html":[1,0,0,77], "_ind_motor_form_8cpp_source.html":[1,0,0,78], "_ind_motor_form_8h.html":[1,0,0,79], "_ind_motor_form_8h_source.html":[1,0,0,79], "_inductor_8cpp_source.html":[1,0,0,80], +"_inductor_8h.html":[1,0,0,81], "_inductor_8h_source.html":[1,0,0,81], "_limiter_8cpp_source.html":[1,0,0,86], "_limiter_8h.html":[1,0,0,87], @@ -160,16 +168,22 @@ var NAVTREEINDEX0 = "_limiter_form_8h.html":[1,0,0,89], "_limiter_form_8h_source.html":[1,0,0,89], "_line_8cpp_source.html":[1,0,0,90], +"_line_8h.html":[1,0,0,91], "_line_8h_source.html":[1,0,0,91], "_line_form_8cpp_source.html":[1,0,0,92], "_line_form_8h.html":[1,0,0,93], "_line_form_8h_source.html":[1,0,0,93], "_load_8cpp_source.html":[1,0,0,94], +"_load_8h.html":[1,0,0,95], +"_load_8h.html#a23ef47ba052bffd629011885a72be6ae":[1,0,0,95,2], +"_load_8h.html#a23ef47ba052bffd629011885a72be6aea050d3b412b1a323ad9b62e94a7e8386f":[1,0,0,95,2,0], +"_load_8h.html#a23ef47ba052bffd629011885a72be6aea3030768ede9894e4595833f464783de6":[1,0,0,95,2,1], "_load_8h_source.html":[1,0,0,95], "_load_form_8cpp_source.html":[1,0,0,96], "_load_form_8h.html":[1,0,0,97], "_load_form_8h_source.html":[1,0,0,97], "_machines_8cpp_source.html":[1,0,0,98], +"_machines_8h.html":[1,0,0,99], "_machines_8h_source.html":[1,0,0,99], "_main_frame_8cpp_source.html":[1,0,0,101], "_main_frame_8h.html":[1,0,0,102], @@ -231,23 +245,9 @@ var NAVTREEINDEX0 = "_power_element_8h.html#ae98a0d9ac1aab1d3a057854f5ebdca1bafd08c03e8d1218eaa3c5e8f69bb98ea7":[1,0,0,109,6,0], "_power_element_8h_source.html":[1,0,0,109], "_power_flow_8cpp_source.html":[1,0,0,110], +"_power_flow_8h.html":[1,0,0,111], "_power_flow_8h_source.html":[1,0,0,111], "_properties_data_8cpp_source.html":[1,0,0,112], -"_properties_data_8h_source.html":[1,0,0,113], -"_properties_form_8cpp_source.html":[1,0,0,114], -"_properties_form_8h_source.html":[1,0,0,115], -"_properties_form_bitmaps_8cpp_source.html":[1,0,0,116], -"_rate_limiter_8cpp_source.html":[1,0,0,117], -"_rate_limiter_8h.html":[1,0,0,118], -"_rate_limiter_8h_source.html":[1,0,0,118], -"_rate_limiter_form_8cpp_source.html":[1,0,0,119], -"_rate_limiter_form_8h.html":[1,0,0,120], -"_rate_limiter_form_8h_source.html":[1,0,0,120], -"_reactive_shunt_element_form_8cpp_source.html":[1,0,0,121], -"_reactive_shunt_element_form_8h.html":[1,0,0,122], -"_reactive_shunt_element_form_8h_source.html":[1,0,0,122], -"_shunt_8cpp_source.html":[1,0,0,123], -"_shunt_8h_source.html":[1,0,0,124], -"_simulations_settings_form_8cpp_source.html":[1,0,0,125], -"_simulations_settings_form_8h.html":[1,0,0,126] +"_properties_data_8h.html":[1,0,0,113], +"_properties_data_8h.html#a22c433d87328b2b1a796559b51b82cc5":[1,0,0,113,3] }; diff --git a/docs/doxygen/html/navtreeindex1.js b/docs/doxygen/html/navtreeindex1.js index 5ec91ef..9853734 100644 --- a/docs/doxygen/html/navtreeindex1.js +++ b/docs/doxygen/html/navtreeindex1.js @@ -1,7 +1,31 @@ var NAVTREEINDEX1 = { +"_properties_data_8h.html#a22c433d87328b2b1a796559b51b82cc5a36b54867355898cdf8184bc1b1b1ab64":[1,0,0,113,3,0], +"_properties_data_8h.html#a22c433d87328b2b1a796559b51b82cc5aa81179a87e35561c97eec4e1b2b1aa47":[1,0,0,113,3,1], +"_properties_data_8h.html#ac18bc6e3749817eb86c02a2e65d4e68b":[1,0,0,113,4], +"_properties_data_8h.html#ac18bc6e3749817eb86c02a2e65d4e68ba80c952bb305178615486f9a8ea95349d":[1,0,0,113,4,0], +"_properties_data_8h.html#ac18bc6e3749817eb86c02a2e65d4e68ba8f764af6b30d2774aa12bfd9ecbc3fd5":[1,0,0,113,4,1], +"_properties_data_8h_source.html":[1,0,0,113], +"_properties_form_8cpp_source.html":[1,0,0,114], +"_properties_form_8h_source.html":[1,0,0,115], +"_properties_form_bitmaps_8cpp_source.html":[1,0,0,116], +"_rate_limiter_8cpp_source.html":[1,0,0,117], +"_rate_limiter_8h.html":[1,0,0,118], +"_rate_limiter_8h_source.html":[1,0,0,118], +"_rate_limiter_form_8cpp_source.html":[1,0,0,119], +"_rate_limiter_form_8h.html":[1,0,0,120], +"_rate_limiter_form_8h_source.html":[1,0,0,120], +"_reactive_shunt_element_form_8cpp_source.html":[1,0,0,121], +"_reactive_shunt_element_form_8h.html":[1,0,0,122], +"_reactive_shunt_element_form_8h_source.html":[1,0,0,122], +"_shunt_8cpp_source.html":[1,0,0,123], +"_shunt_8h.html":[1,0,0,124], +"_shunt_8h_source.html":[1,0,0,124], +"_simulations_settings_form_8cpp_source.html":[1,0,0,125], +"_simulations_settings_form_8h.html":[1,0,0,126], "_simulations_settings_form_8h_source.html":[1,0,0,126], "_sum_8cpp_source.html":[1,0,0,127], +"_sum_8h.html":[1,0,0,128], "_sum_8h_source.html":[1,0,0,128], "_sum_form_8cpp_source.html":[1,0,0,129], "_sum_form_8h.html":[1,0,0,130], @@ -10,23 +34,62 @@ var NAVTREEINDEX1 = "_switching_form_8h.html":[1,0,0,132], "_switching_form_8h_source.html":[1,0,0,132], "_sync_generator_8cpp_source.html":[1,0,0,133], +"_sync_generator_8h.html":[1,0,0,134], "_sync_generator_8h_source.html":[1,0,0,134], "_sync_machine_form_8cpp_source.html":[1,0,0,135], "_sync_machine_form_8h.html":[1,0,0,136], "_sync_machine_form_8h_source.html":[1,0,0,136], "_sync_motor_8cpp_source.html":[1,0,0,137], +"_sync_motor_8h.html":[1,0,0,138], "_sync_motor_8h_source.html":[1,0,0,138], "_text_8cpp_source.html":[1,0,0,139], +"_text_8h.html":[1,0,0,140], +"_text_8h.html#a16b11be27a8e9362dd122c4d879e01ae":[1,0,0,140,2], +"_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea01a66f4d8d66e4614c1c900c5a1c37ff":[1,0,0,140,2,0], +"_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea04e67f46cc2905135b5d376518542b12":[1,0,0,140,2,7], +"_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea111c77888a1c99bf6aae9e70c460cf5c":[1,0,0,140,2,9], +"_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea4924f28256f67f848f35fd2c52316425":[1,0,0,140,2,6], +"_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea6a7fcf36ea744349687acad656884ee6":[1,0,0,140,2,5], +"_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea96ea624f93518535cfa4cdbf874fc5a5":[1,0,0,140,2,4], +"_text_8h.html#a16b11be27a8e9362dd122c4d879e01aea998ba698d626c693ac0221506d9b25f4":[1,0,0,140,2,2], +"_text_8h.html#a16b11be27a8e9362dd122c4d879e01aeac13da57b6eda9c8ec23ed0a371600320":[1,0,0,140,2,8], +"_text_8h.html#a16b11be27a8e9362dd122c4d879e01aead674b87cc573664b0ed19aea4dad9b28":[1,0,0,140,2,3], +"_text_8h.html#a16b11be27a8e9362dd122c4d879e01aeaf00e74cf5eee391e33017bded0e16441":[1,0,0,140,2,1], +"_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6":[1,0,0,140,1], +"_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a2ca371d2e0d1ad3ac5b2b50adfafd9e1":[1,0,0,140,1,1], +"_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a4c60231ccdc66a26e8496abe76576f24":[1,0,0,140,1,4], +"_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a4e82b326f9c3de98460df5362aa44e92":[1,0,0,140,1,2], +"_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6a77de5416cbae97c24743d0b479d3e942":[1,0,0,140,1,7], +"_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6aa62cac0375f8d12dad808a2714811d1d":[1,0,0,140,1,8], +"_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6aabd0755439b58817f974429b6fc24b75":[1,0,0,140,1,3], +"_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ab7040a50973a299b4bb7a583c96daadd":[1,0,0,140,1,0], +"_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ad45f89e02b92507cadf1f1116e9474fb":[1,0,0,140,1,11], +"_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ad7558996cb619db166f38c76c75bb232":[1,0,0,140,1,10], +"_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6ae1b2bf8507145590a0e4152cc9630d82":[1,0,0,140,1,9], +"_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6af39976a2a2423b1817236bef5d2213e7":[1,0,0,140,1,6], +"_text_8h.html#ad8ed01ff3ff33333d8e19db4d2818bb6af3c8353176bb407fb6b1b40efd5476d1":[1,0,0,140,1,5], "_text_8h_source.html":[1,0,0,140], "_text_form_8cpp_source.html":[1,0,0,141], "_text_form_8h.html":[1,0,0,142], "_text_form_8h_source.html":[1,0,0,142], "_transfer_function_8cpp_source.html":[1,0,0,143], +"_transfer_function_8h.html":[1,0,0,144], "_transfer_function_8h_source.html":[1,0,0,144], "_transfer_function_form_8cpp_source.html":[1,0,0,145], "_transfer_function_form_8h.html":[1,0,0,146], "_transfer_function_form_8h_source.html":[1,0,0,146], "_transformer_8cpp_source.html":[1,0,0,147], +"_transformer_8h.html":[1,0,0,148], +"_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06":[1,0,0,148,2], +"_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06a18d745d4045365a77ecf886610922218":[1,0,0,148,2,6], +"_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06a4f417627b015a8fed7b3ebf0f8e0fdfe":[1,0,0,148,2,0], +"_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06a53db8ed07cc0e8c5b6cd377bf2a37e4f":[1,0,0,148,2,4], +"_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06a5f05b987519c9c5bdc532be11940c61a":[1,0,0,148,2,8], +"_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06ac9f8b56645f38eb0620cb69a914f3095":[1,0,0,148,2,3], +"_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06acdee63c4174046055f9c960c38178741":[1,0,0,148,2,5], +"_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06add500826fddc4ad0105a8d88bb8e8da7":[1,0,0,148,2,2], +"_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06ae69f44260b5da3ed29f47164d6b97de0":[1,0,0,148,2,7], +"_transformer_8h.html#ace6b3807048fabdaa8bbf0c8f8860d06afc14c39ecae15fd6b25da581ab530ed5":[1,0,0,148,2,1], "_transformer_8h_source.html":[1,0,0,148], "_transformer_form_8cpp_source.html":[1,0,0,149], "_transformer_form_8h.html":[1,0,0,150], @@ -186,68 +249,5 @@ var NAVTREEINDEX1 = "class_bus_form_base.html#a7d827c0d4128a4f6fd83dc23396bb894":[0,0,6,47], "class_bus_form_base.html#a801768a5a9d92a52f69fb3eeb3ad0406":[0,0,6,18], "class_bus_form_base.html#a82fe4711262bffeb2bb4bb442e1252ac":[0,0,6,9], -"class_bus_form_base.html#a86f11b43c8b8762eba2233219590638c":[0,0,6,13], -"class_bus_form_base.html#a8731cdb29c22002ed2d63bceaba322a5":[0,0,6,86], -"class_bus_form_base.html#a8d5b1711fddb03dd93655a6427bdf482":[0,0,6,28], -"class_bus_form_base.html#a9737e676f0eb420635a0acf49a0f7f2e":[0,0,6,43], -"class_bus_form_base.html#a97c195c038c7bac1ec32d69c87d7f3b6":[0,0,6,38], -"class_bus_form_base.html#a9852553d782d38de865ba5c5960983a4":[0,0,6,15], -"class_bus_form_base.html#aa017dca9dccd43a28236173370b89bb3":[0,0,6,32], -"class_bus_form_base.html#aa206919e95a050a9c9b2a471e6b5c4c9":[0,0,6,87], -"class_bus_form_base.html#aa9546384b368a06197565391b6c38315":[0,0,6,49], -"class_bus_form_base.html#aaac7957c8de855891e7e102562ca722f":[0,0,6,30], -"class_bus_form_base.html#aac4df99b23e332ed5c950ddbc7247715":[0,0,6,41], -"class_bus_form_base.html#aad9b945cf9842a88b1e61085963eab7a":[0,0,6,42], -"class_bus_form_base.html#aae93403e83e2c7f5e2a769a2bffccd83":[0,0,6,40], -"class_bus_form_base.html#ab29a9e37fdfa9b3c20ce6aad1191ee69":[0,0,6,63], -"class_bus_form_base.html#ab4d194132dd3d327f33cbe91e324537a":[0,0,6,5], -"class_bus_form_base.html#ab51f67bf4aa7de715e867203af072a05":[0,0,6,83], -"class_bus_form_base.html#ab5b4dc715c6d9fde94f9cfa5a984bf11":[0,0,6,50], -"class_bus_form_base.html#ab73005fe27a337b523a5f272d4b82bea":[0,0,6,20], -"class_bus_form_base.html#abd3346fc4bdb1cf185138043359e324a":[0,0,6,19], -"class_bus_form_base.html#abf7d8daf69f4133fc8175a7653b8ff99":[0,0,6,23], -"class_bus_form_base.html#ac1120978e7aa07573b91813a8ae68a57":[0,0,6,0], -"class_bus_form_base.html#ac64b7fddaa3ffe0e7671b920495cfa9f":[0,0,6,14], -"class_bus_form_base.html#aca83346b86e9a3b13447111e109c99e3":[0,0,6,57], -"class_bus_form_base.html#ace34b60ad7f00f16e1b75994326cab45":[0,0,6,29], -"class_bus_form_base.html#acf8bd66a3a96a1eed23d011b987a0c3d":[0,0,6,2], -"class_bus_form_base.html#ad21eac8e9b4bae9eeb6d6b74b0504917":[0,0,6,3], -"class_bus_form_base.html#ad9c07ce14e481e6d20062ddeb3464675":[0,0,6,51], -"class_bus_form_base.html#ada95b25afb1d645438a2d19e580c996d":[0,0,6,10], -"class_bus_form_base.html#adac2978ce17e56e8ad03d2f7da7be343":[0,0,6,48], -"class_bus_form_base.html#adc4f4cf29badd77f8e648fddeef4ce94":[0,0,6,75], -"class_bus_form_base.html#ae423bd94fc53bce76329dcb7dafc524e":[0,0,6,31], -"class_bus_form_base.html#ae452c5575974492125f1568338c8b9ae":[0,0,6,17], -"class_bus_form_base.html#ae6c7cbbf7aa4fa53647b3a00f1c3fffc":[0,0,6,85], -"class_bus_form_base.html#ae9d2477b6b6cfbb03af205a96d5c4928":[0,0,6,80], -"class_bus_form_base.html#aedb47f128db9b468dd2a58ad73df74b1":[0,0,6,56], -"class_bus_form_base.html#af0c5a0347c1b7fd2a5bdaad95e4574e1":[0,0,6,44], -"class_bus_form_base.html#af259e49af9eaa04b29b193c73ba2d9de":[0,0,6,58], -"class_bus_form_base.html#af5b28bc2cd481ebc7a3bb99261727683":[0,0,6,45], -"class_bus_form_base.html#af5fbe5a2f9281bfaec01d0b6d158a71b":[0,0,6,73], -"class_bus_form_base.html#af8503eb53503f90af53b8206c16e4629":[0,0,6,79], -"class_bus_form_base.html#afb24ac3dd51199ac3984469bb7df3fce":[0,0,6,59], -"class_bus_form_base.html#afb7b2bed6e9d25865022dfd10baadc58":[0,0,6,81], -"class_bus_form_base.html#afc825c5f3a39d9853d82ae9f88a2b4c4":[0,0,6,4], -"class_bus_form_base.html#aff5d6c90e212f2ca0fa4856b65dcdb15":[0,0,6,35], -"class_bus_form_base.html#affaa6a2355ae588b3f6da69b92ba90b0":[0,0,6,34], -"class_bus_form_base.html#affdfd06744bc4def0c85f658f4682d60":[0,0,6,66], -"class_camera.html":[0,0,7], -"class_camera.html#a01f94c3543f56ede7af49dc778f19331":[0,0,7,0], -"class_camera.html#a0593049968c312454ac880588d6e4195":[0,0,7,7], -"class_camera.html#a0ef3092f83fe959ac5939c75e910bb3e":[0,0,7,12], -"class_camera.html#a2b81311bec97f4c7dfdd94c32416da85":[0,0,7,6], -"class_camera.html#a2df233cd73c2ca8486dfac9a4aff27ef":[0,0,7,14], -"class_camera.html#a3fb8d75e1dbaee73562a520eb0529d28":[0,0,7,5], -"class_camera.html#a46434cdf939f99eb9d7b6a6260c6954a":[0,0,7,17], -"class_camera.html#a464f3fde97dd3cf958a7152af31073f2":[0,0,7,2], -"class_camera.html#a4ddf44273d5228cea6b4b9a27c08dd6d":[0,0,7,11], -"class_camera.html#a4e9ee902f6c711187fb04ed7f90d2ef7":[0,0,7,3], -"class_camera.html#a6e54494ab24eb601949faa55c1d1654f":[0,0,7,8], -"class_camera.html#a7ea30c697691da07dd983c3395b210a8":[0,0,7,13], -"class_camera.html#a9831a7fda14d39b2fb1ec6c1141d88fc":[0,0,7,16], -"class_camera.html#abac6929baae257d9fb55e894371b140b":[0,0,7,10], -"class_camera.html#ad092fd057fb12a1d73214ecd81f8cde3":[0,0,7,4], -"class_camera.html#ad1897942d0ccf91052386388a497349f":[0,0,7,1], -"class_camera.html#aeb4eb52f0f05f5641cd71e4b8505e50a":[0,0,7,18] +"class_bus_form_base.html#a86f11b43c8b8762eba2233219590638c":[0,0,6,13] }; diff --git a/docs/doxygen/html/navtreeindex10.js b/docs/doxygen/html/navtreeindex10.js index 012d319..00bcac4 100644 --- a/docs/doxygen/html/navtreeindex10.js +++ b/docs/doxygen/html/navtreeindex10.js @@ -1,5 +1,68 @@ var NAVTREEINDEX10 = { +"class_switching_form_base.html#a12a2da9f3c7ed16f5e9965c13d166f96":[0,0,93,3], +"class_switching_form_base.html#a2816bcf1b23f2e79b0b58a0a8de0ba24":[0,0,93,16], +"class_switching_form_base.html#a2c79761f5c68a966661865a91e0a4c32":[0,0,93,25], +"class_switching_form_base.html#a2f55dcdb9ba37f9c4e1428f6767b168e":[0,0,93,2], +"class_switching_form_base.html#a4120a54ec6ba678f97f6f23b27453f6c":[0,0,93,6], +"class_switching_form_base.html#a461522bb3739dd790b968c9536239d3d":[0,0,93,22], +"class_switching_form_base.html#a53be89419785168b8a74cbbc4baf4da5":[0,0,93,17], +"class_switching_form_base.html#a5682b2c0825b46e0eb3ac8990b1b5c7a":[0,0,93,21], +"class_switching_form_base.html#a67f95f0d053dd46cdacb20848c0d9c84":[0,0,93,12], +"class_switching_form_base.html#a7672f7fad7fd63de788006d8c67668d3":[0,0,93,10], +"class_switching_form_base.html#a7d645a4f981511ba46e549c89a624533":[0,0,93,18], +"class_switching_form_base.html#a84b3ee2c021abbe31d8c42c995a89d56":[0,0,93,1], +"class_switching_form_base.html#a86f434b7cd754bf15e415d394f5101a8":[0,0,93,23], +"class_switching_form_base.html#a92d178826ef95170e623bb4ad7d33171":[0,0,93,0], +"class_switching_form_base.html#aab2b0440e8a1af4a2c16ae3d88c4713a":[0,0,93,24], +"class_switching_form_base.html#ab606b039351e82f6b5115336d0edafd5":[0,0,93,9], +"class_switching_form_base.html#ab8d540ac6bae77e44f30b8ffce030e07":[0,0,93,19], +"class_switching_form_base.html#ac1bb1bf80e6526bfd97e54277ef8da3c":[0,0,93,5], +"class_switching_form_base.html#ac3ca747257bb9ca0fa1ce1c09a6e5342":[0,0,93,8], +"class_switching_form_base.html#ac839296c57c6c380547180c3c7180f5c":[0,0,93,30], +"class_switching_form_base.html#acc549ba43edb9d7ba4ca938982fd794b":[0,0,93,7], +"class_switching_form_base.html#ad0c13eb28aee4127889405283bb72904":[0,0,93,28], +"class_switching_form_base.html#ad17112f4d131937423f551720066177a":[0,0,93,26], +"class_switching_form_base.html#ad21d7949427c973081f7461620506335":[0,0,93,13], +"class_switching_form_base.html#adfc965bcb8575b5b0d36e7ad311d2d0b":[0,0,93,27], +"class_switching_form_base.html#ae113c3c97e21037e6561811a094436a0":[0,0,93,14], +"class_switching_form_base.html#ae6854ecd50f251c6c5907dfa6945fdc3":[0,0,93,4], +"class_switching_form_base.html#afd2e5b45c5a295b58a255ba0159ad8d4":[0,0,93,11], +"class_sync_generator.html":[0,0,94], +"class_sync_generator.html#a05fbc44f44fb207083a7550e421f8bb4":[0,0,94,10], +"class_sync_generator.html#a23d63853faf0a4ee4aa1301cb234c603":[0,0,94,15], +"class_sync_generator.html#a24b9894fa42473dfb8bcf82221401a97":[0,0,94,4], +"class_sync_generator.html#a45ad59011c69a3b08c35ca16af6a5de6":[0,0,94,14], +"class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec":[0,0,94,13], +"class_sync_generator.html#a54c742a72e8d9d7da2990b1a455b899a":[0,0,94,8], +"class_sync_generator.html#a57b0e5d734736aa15d7a0ae59c21f5cc":[0,0,94,3], +"class_sync_generator.html#a6cbf05435af171775cbaf81d8beb6474":[0,0,94,2], +"class_sync_generator.html#a710965e1539d2199096bc5e71116de8a":[0,0,94,11], +"class_sync_generator.html#a7f825dd5949d3bf5b49e4e4b788b9de3":[0,0,94,1], +"class_sync_generator.html#a87b438b8b95a119ac298a49fd4248272":[0,0,94,6], +"class_sync_generator.html#a9130e8714c1518683540f587aca1201f":[0,0,94,5], +"class_sync_generator.html#a9454438d059269c194e1aa648e122f7e":[0,0,94,9], +"class_sync_generator.html#aaa4c5978dc6d344747d74e36fb3e71d8":[0,0,94,12], +"class_sync_generator.html#af66e02540c23285395e3592d1c822f99":[0,0,94,0], +"class_sync_generator.html#afcb0a1c03dab5ede586e5d15231f2cab":[0,0,94,7], +"class_sync_machine_form.html":[0,0,96], +"class_sync_machine_form.html#a1a4fc8f4ae070df13b73c7b400e0dc43":[0,0,96,3], +"class_sync_machine_form.html#a3bc93d1fd6285fcd5e11a4c18541914e":[0,0,96,9], +"class_sync_machine_form.html#a53fd325bac54a9509ea530926bd50825":[0,0,96,0], +"class_sync_machine_form.html#a61b60bfc52876775f74160ae9075c697":[0,0,96,12], +"class_sync_machine_form.html#a9421e44f0914790e23bcecaa222eaecc":[0,0,96,2], +"class_sync_machine_form.html#a9c53acf928dd35b648d0a67b69fa8b46":[0,0,96,6], +"class_sync_machine_form.html#a9fea7ef16899f918e5cedad577f960e7":[0,0,96,1], +"class_sync_machine_form.html#aa6bf6f86e79a0329f876996b651d3c72":[0,0,96,7], +"class_sync_machine_form.html#ac21b7bb1c3261b3ff128d9339a5bef51":[0,0,96,11], +"class_sync_machine_form.html#ac4699ffcdb2c8f09e8610cb1afd50e05":[0,0,96,8], +"class_sync_machine_form.html#ad7899edef11e6c72782eeef5aecfec54":[0,0,96,10], +"class_sync_machine_form.html#aea6339fd7121c438af87d8515490ab06":[0,0,96,5], +"class_sync_machine_form.html#aed6770180b4f2efb07c8df061e2fbd03":[0,0,96,4], +"class_sync_machine_form_base.html":[0,0,97], +"class_sync_machine_form_base.html#a0045396673e3acd9fb6a21982b7d7596":[0,0,97,22], +"class_sync_machine_form_base.html#a0063a2e8df81e75b32e0fac571c921ae":[0,0,97,34], +"class_sync_machine_form_base.html#a05439a30d63c78be06d1d046c0cc59d8":[0,0,97,87], "class_sync_machine_form_base.html#a0580ac7326c742ffe05d7791d83a52d7":[0,0,97,83], "class_sync_machine_form_base.html#a05cfcbb0cfa2e3e4ec07a7fba1bdf5d6":[0,0,97,61], "class_sync_machine_form_base.html#a0c385577ff27d8d9ed1a87a22fce73fd":[0,0,97,63], @@ -186,68 +249,5 @@ var NAVTREEINDEX10 = "class_text_form_base.html#a4ca5f55e86ab0456c04e521094857369":[0,0,103,37], "class_text_form_base.html#a4def79e764545dc050b355da45b091d1":[0,0,103,44], "class_text_form_base.html#a6610d9f72f598b3f4e8f86aad7980c74":[0,0,103,4], -"class_text_form_base.html#a6ac5da788492cc037aec6b6a9dcbd4a8":[0,0,103,41], -"class_text_form_base.html#a6e8c2c55fcac20adba14d0ee92ee6560":[0,0,103,7], -"class_text_form_base.html#a6f796e5b87ec48aa812a401262a9fe93":[0,0,103,23], -"class_text_form_base.html#a7334788ba4af44ccb01547c348d2310c":[0,0,103,21], -"class_text_form_base.html#a73e92b286d13f68c697335df49c33b40":[0,0,103,29], -"class_text_form_base.html#a7464a3fc135d9a85ecb75c42f50bef0e":[0,0,103,38], -"class_text_form_base.html#a7edc22afae66bc4e91461584668a7d64":[0,0,103,42], -"class_text_form_base.html#a87c7b2df984b9fa32c99bc18b6207342":[0,0,103,6], -"class_text_form_base.html#a8d9c9eadf9e724d7c7c1fc9a6b5e09d6":[0,0,103,49], -"class_text_form_base.html#a97e9f9088c396c51645763f65f1fcae9":[0,0,103,34], -"class_text_form_base.html#a98382c1f1b903db868557cc3ab305143":[0,0,103,47], -"class_text_form_base.html#a9a2f9ad1a172ffed751944231cf26332":[0,0,103,5], -"class_text_form_base.html#a9e96d1d31cfb24ddb39ff24e366cbb1a":[0,0,103,26], -"class_text_form_base.html#a9f865ba5241dc9ba607e514a4b5a0e0d":[0,0,103,32], -"class_text_form_base.html#aa7bce0b447d510e11c52344e26019417":[0,0,103,0], -"class_text_form_base.html#aadf4ac576b11c235b43359df5e298942":[0,0,103,3], -"class_text_form_base.html#aaf38921dfe3bee5a769e906dbc6843f1":[0,0,103,19], -"class_text_form_base.html#ab4220dcb19935bebb8aefb2c486378ef":[0,0,103,31], -"class_text_form_base.html#ab486d5c675ebde25f89c763378b19f60":[0,0,103,2], -"class_text_form_base.html#abcde3d462cfa4632198b2dd0f5835041":[0,0,103,50], -"class_text_form_base.html#ac7dc780d44ca9c55d10a0d1012a1f8ba":[0,0,103,18], -"class_text_form_base.html#ac88b09dd08a5b01b69c04e644d25163a":[0,0,103,46], -"class_text_form_base.html#aca2e5f72c0d399f1e48f35f129b94b29":[0,0,103,1], -"class_text_form_base.html#acc40a994d976ea04f66dbb6790b5d7a5":[0,0,103,12], -"class_text_form_base.html#ad1edec95968fef33c94f96a2fe76e2e5":[0,0,103,33], -"class_text_form_base.html#addfe9749ca7aa07c2d14bbddbe8417c5":[0,0,103,13], -"class_text_form_base.html#adf2b35e57ba91096b1de72f761e95fa0":[0,0,103,28], -"class_text_form_base.html#ae70c96bb398576eff2ad8d151833c179":[0,0,103,8], -"class_text_form_base.html#ae723a4d74db7989a63ccd46eedc44bff":[0,0,103,45], -"class_text_form_base.html#ae9e39d45b4754ff1df2c1e0e552dd982":[0,0,103,35], -"class_text_form_base.html#af3457265fe6266b0ef61d30790fb33eb":[0,0,103,9], -"class_text_form_base.html#af34bc2311411715448bd41378f8a6895":[0,0,103,36], -"class_text_form_base.html#afc1a68f987a02df5df3c927351020450":[0,0,103,15], -"class_text_g_l_drawable.html":[0,0,104], -"class_text_g_l_drawable.html#a002950e57ddee2b366a428cf166d265a":[0,0,104,28], -"class_text_g_l_drawable.html#a12875f8cc1cdb675353c6b12112d05fe":[0,0,104,18], -"class_text_g_l_drawable.html#a25d765828a9ecd9629ff9ccd4a66fc43":[0,0,104,9], -"class_text_g_l_drawable.html#a2a8aa1255ae9546618d8a30051882c18":[0,0,104,4], -"class_text_g_l_drawable.html#a2df771de3dd7c16f1a88540ac6620ab4":[0,0,104,0], -"class_text_g_l_drawable.html#a30803a43c1f1ee4ae35900bc4f6a5a3c":[0,0,104,16], -"class_text_g_l_drawable.html#a30a8a416b10b04e877a0ae10528150d0":[0,0,104,26], -"class_text_g_l_drawable.html#a328d55b4c8e3684a1093872cad1d41bb":[0,0,104,5], -"class_text_g_l_drawable.html#a3694676b20848e16dedf11569639216c":[0,0,104,19], -"class_text_g_l_drawable.html#a385db5bcf159982ba006a8dd97ee1383":[0,0,104,7], -"class_text_g_l_drawable.html#a44b1a0129b8da33b2be9a1745415de93":[0,0,104,24], -"class_text_g_l_drawable.html#a4894c656b1c7016c8c8176cff2f8c66f":[0,0,104,15], -"class_text_g_l_drawable.html#a4a20344804fa6b34c02a7fd55ad96314":[0,0,104,10], -"class_text_g_l_drawable.html#a51bdeb52e839fc941ed3803f557f7911":[0,0,104,1], -"class_text_g_l_drawable.html#a61de4c6cec06534405b7ecc292b9bd28":[0,0,104,11], -"class_text_g_l_drawable.html#a7beff45d550827ce4e2f3335585a4f42":[0,0,104,6], -"class_text_g_l_drawable.html#a816623b682408889fa6893b41782453b":[0,0,104,14], -"class_text_g_l_drawable.html#a847984364f55bfd063419a359d9acc91":[0,0,104,20], -"class_text_g_l_drawable.html#a85eb711312c444322767319bd23a7795":[0,0,104,23], -"class_text_g_l_drawable.html#a8894b391174ffe37d1d372b8c4a31fe7":[0,0,104,12], -"class_text_g_l_drawable.html#a93b56ed45e3097129d4682c735a23fcf":[0,0,104,8], -"class_text_g_l_drawable.html#a965ac9bf245f1979a080193986874f18":[0,0,104,2], -"class_text_g_l_drawable.html#a9b461935514f4da4805889fdcff48be6":[0,0,104,25], -"class_text_g_l_drawable.html#ab1b363afde75d9f53aedea103c24f287":[0,0,104,22], -"class_text_g_l_drawable.html#acba312735b20ed532c80992e4777f262":[0,0,104,27], -"class_text_g_l_drawable.html#ad84933ea0f396ee9c18d463d22e4c3f8":[0,0,104,21], -"class_text_g_l_drawable.html#ae05f3bb671317d687421226c41277553":[0,0,104,13], -"class_text_g_l_drawable.html#af24996577c26268a514f2ee43e72ff4d":[0,0,104,17], -"class_text_g_l_drawable.html#af9bcd8c0e163302429ca8a17f587e8ec":[0,0,104,3], -"class_text_texture.html":[0,0,105] +"class_text_form_base.html#a6ac5da788492cc037aec6b6a9dcbd4a8":[0,0,103,41] }; diff --git a/docs/doxygen/html/navtreeindex11.js b/docs/doxygen/html/navtreeindex11.js index 76dbe47..b85bedb 100644 --- a/docs/doxygen/html/navtreeindex11.js +++ b/docs/doxygen/html/navtreeindex11.js @@ -1,5 +1,68 @@ var NAVTREEINDEX11 = { +"class_text_form_base.html#a6e8c2c55fcac20adba14d0ee92ee6560":[0,0,103,7], +"class_text_form_base.html#a6f796e5b87ec48aa812a401262a9fe93":[0,0,103,23], +"class_text_form_base.html#a7334788ba4af44ccb01547c348d2310c":[0,0,103,21], +"class_text_form_base.html#a73e92b286d13f68c697335df49c33b40":[0,0,103,29], +"class_text_form_base.html#a7464a3fc135d9a85ecb75c42f50bef0e":[0,0,103,38], +"class_text_form_base.html#a7edc22afae66bc4e91461584668a7d64":[0,0,103,42], +"class_text_form_base.html#a87c7b2df984b9fa32c99bc18b6207342":[0,0,103,6], +"class_text_form_base.html#a8d9c9eadf9e724d7c7c1fc9a6b5e09d6":[0,0,103,49], +"class_text_form_base.html#a97e9f9088c396c51645763f65f1fcae9":[0,0,103,34], +"class_text_form_base.html#a98382c1f1b903db868557cc3ab305143":[0,0,103,47], +"class_text_form_base.html#a9a2f9ad1a172ffed751944231cf26332":[0,0,103,5], +"class_text_form_base.html#a9e96d1d31cfb24ddb39ff24e366cbb1a":[0,0,103,26], +"class_text_form_base.html#a9f865ba5241dc9ba607e514a4b5a0e0d":[0,0,103,32], +"class_text_form_base.html#aa7bce0b447d510e11c52344e26019417":[0,0,103,0], +"class_text_form_base.html#aadf4ac576b11c235b43359df5e298942":[0,0,103,3], +"class_text_form_base.html#aaf38921dfe3bee5a769e906dbc6843f1":[0,0,103,19], +"class_text_form_base.html#ab4220dcb19935bebb8aefb2c486378ef":[0,0,103,31], +"class_text_form_base.html#ab486d5c675ebde25f89c763378b19f60":[0,0,103,2], +"class_text_form_base.html#abcde3d462cfa4632198b2dd0f5835041":[0,0,103,50], +"class_text_form_base.html#ac7dc780d44ca9c55d10a0d1012a1f8ba":[0,0,103,18], +"class_text_form_base.html#ac88b09dd08a5b01b69c04e644d25163a":[0,0,103,46], +"class_text_form_base.html#aca2e5f72c0d399f1e48f35f129b94b29":[0,0,103,1], +"class_text_form_base.html#acc40a994d976ea04f66dbb6790b5d7a5":[0,0,103,12], +"class_text_form_base.html#ad1edec95968fef33c94f96a2fe76e2e5":[0,0,103,33], +"class_text_form_base.html#addfe9749ca7aa07c2d14bbddbe8417c5":[0,0,103,13], +"class_text_form_base.html#adf2b35e57ba91096b1de72f761e95fa0":[0,0,103,28], +"class_text_form_base.html#ae70c96bb398576eff2ad8d151833c179":[0,0,103,8], +"class_text_form_base.html#ae723a4d74db7989a63ccd46eedc44bff":[0,0,103,45], +"class_text_form_base.html#ae9e39d45b4754ff1df2c1e0e552dd982":[0,0,103,35], +"class_text_form_base.html#af3457265fe6266b0ef61d30790fb33eb":[0,0,103,9], +"class_text_form_base.html#af34bc2311411715448bd41378f8a6895":[0,0,103,36], +"class_text_form_base.html#afc1a68f987a02df5df3c927351020450":[0,0,103,15], +"class_text_g_l_drawable.html":[0,0,104], +"class_text_g_l_drawable.html#a002950e57ddee2b366a428cf166d265a":[0,0,104,28], +"class_text_g_l_drawable.html#a12875f8cc1cdb675353c6b12112d05fe":[0,0,104,18], +"class_text_g_l_drawable.html#a25d765828a9ecd9629ff9ccd4a66fc43":[0,0,104,9], +"class_text_g_l_drawable.html#a2a8aa1255ae9546618d8a30051882c18":[0,0,104,4], +"class_text_g_l_drawable.html#a2df771de3dd7c16f1a88540ac6620ab4":[0,0,104,0], +"class_text_g_l_drawable.html#a30803a43c1f1ee4ae35900bc4f6a5a3c":[0,0,104,16], +"class_text_g_l_drawable.html#a30a8a416b10b04e877a0ae10528150d0":[0,0,104,26], +"class_text_g_l_drawable.html#a328d55b4c8e3684a1093872cad1d41bb":[0,0,104,5], +"class_text_g_l_drawable.html#a3694676b20848e16dedf11569639216c":[0,0,104,19], +"class_text_g_l_drawable.html#a385db5bcf159982ba006a8dd97ee1383":[0,0,104,7], +"class_text_g_l_drawable.html#a44b1a0129b8da33b2be9a1745415de93":[0,0,104,24], +"class_text_g_l_drawable.html#a4894c656b1c7016c8c8176cff2f8c66f":[0,0,104,15], +"class_text_g_l_drawable.html#a4a20344804fa6b34c02a7fd55ad96314":[0,0,104,10], +"class_text_g_l_drawable.html#a51bdeb52e839fc941ed3803f557f7911":[0,0,104,1], +"class_text_g_l_drawable.html#a61de4c6cec06534405b7ecc292b9bd28":[0,0,104,11], +"class_text_g_l_drawable.html#a7beff45d550827ce4e2f3335585a4f42":[0,0,104,6], +"class_text_g_l_drawable.html#a816623b682408889fa6893b41782453b":[0,0,104,14], +"class_text_g_l_drawable.html#a847984364f55bfd063419a359d9acc91":[0,0,104,20], +"class_text_g_l_drawable.html#a85eb711312c444322767319bd23a7795":[0,0,104,23], +"class_text_g_l_drawable.html#a8894b391174ffe37d1d372b8c4a31fe7":[0,0,104,12], +"class_text_g_l_drawable.html#a93b56ed45e3097129d4682c735a23fcf":[0,0,104,8], +"class_text_g_l_drawable.html#a965ac9bf245f1979a080193986874f18":[0,0,104,2], +"class_text_g_l_drawable.html#a9b461935514f4da4805889fdcff48be6":[0,0,104,25], +"class_text_g_l_drawable.html#ab1b363afde75d9f53aedea103c24f287":[0,0,104,22], +"class_text_g_l_drawable.html#acba312735b20ed532c80992e4777f262":[0,0,104,27], +"class_text_g_l_drawable.html#ad84933ea0f396ee9c18d463d22e4c3f8":[0,0,104,21], +"class_text_g_l_drawable.html#ae05f3bb671317d687421226c41277553":[0,0,104,13], +"class_text_g_l_drawable.html#af24996577c26268a514f2ee43e72ff4d":[0,0,104,17], +"class_text_g_l_drawable.html#af9bcd8c0e163302429ca8a17f587e8ec":[0,0,104,3], +"class_text_texture.html":[0,0,105], "class_text_texture.html#a028855c450db4925652071c212cce8c7":[0,0,105,0], "class_text_texture.html#a13d64c6afe292be4ccca8294dd501f0f":[0,0,105,1], "class_text_texture.html#a4a20344804fa6b34c02a7fd55ad96314":[0,0,105,5], @@ -186,68 +249,5 @@ var NAVTREEINDEX11 = "class_transformer_form_base.html#ade4e3e90c5c0f4f0abe278ffba2443a0":[0,0,112,44], "class_transformer_form_base.html#ade72da576a6bcd2182798e449f8ce8d5":[0,0,112,38], "class_transformer_form_base.html#ae0c2fbf9475ee1e780896fa89c14b878":[0,0,112,0], -"class_transformer_form_base.html#ae2196cf62a3c277247a112d7971872b0":[0,0,112,78], -"class_transformer_form_base.html#ae7a24e53da32b8caf67fc5ef39618743":[0,0,112,54], -"class_transformer_form_base.html#aee0b43085f009f2517994967d080b794":[0,0,112,7], -"class_transformer_form_base.html#aee7759b13cf93e4722e7514f4ddcfa8f":[0,0,112,39], -"class_transformer_form_base.html#af01e4be05d790d0a2236846899418b53":[0,0,112,19], -"class_transformer_form_base.html#af088bc27c75828d7829f18c4c4a5d7df":[0,0,112,64], -"class_transformer_form_base.html#af1394f18900292398f9f317341f1e727":[0,0,112,25], -"class_transformer_form_base.html#af65e4801b524b44b075a6218777777f0":[0,0,112,47], -"class_workspace.html":[0,0,113], -"class_workspace.html#a013bdfced9e47c0a11d378409cda1376":[0,0,113,62], -"class_workspace.html#a057257829453518249ebc0fc971c2a68":[0,0,113,47], -"class_workspace.html#a0f25d318ff7310d11e510239953b92fc":[0,0,113,8], -"class_workspace.html#a10c751ef894a1ce02ca401a0a60b3333":[0,0,113,3], -"class_workspace.html#a16047d114ac4c9708eccf87ddc93c57f":[0,0,113,59], -"class_workspace.html#a16b55585d4fa51fc3a565df2ce16997e":[0,0,113,69], -"class_workspace.html#a239e2b579a4c1b640b4f5e2640c61044":[0,0,113,70], -"class_workspace.html#a259249b912ae1caae1c166eb2f9f4123":[0,0,113,25], -"class_workspace.html#a26add99100a783d857b52fe497d5a209":[0,0,113,71], -"class_workspace.html#a29e232a2810f36222f0b1ba2f775f606":[0,0,113,5], -"class_workspace.html#a2c1f915ba189d1dc3b9088fd79b2f31a":[0,0,113,54], -"class_workspace.html#a38a886655d99aae4dbaeec88e7f855ce":[0,0,113,19], -"class_workspace.html#a3ffd9682e5898f467b54748c5277e239":[0,0,113,2], -"class_workspace.html#a444c05695fd50548fa025a97567e8a55":[0,0,113,73], -"class_workspace.html#a47405d47dd54d98cd0b5e323a5cf9071":[0,0,113,43], -"class_workspace.html#a49bec4c0ddb83d1bcfe4bb6cdf688864":[0,0,113,21], -"class_workspace.html#a4fa9ee617ed7da22b84eced403bb512e":[0,0,113,48], -"class_workspace.html#a52b015440855fbab2ae1ba7a229a36c7":[0,0,113,31], -"class_workspace.html#a5347e4a880ed744ef20da988aaac534f":[0,0,113,72], -"class_workspace.html#a58e7526fe48d3fbff16c7bf7ac607b0c":[0,0,113,35], -"class_workspace.html#a5b71e0ec48f1d9ae1ce9e01b546c01b1":[0,0,113,18], -"class_workspace.html#a5bc77206269e7abdd75085b90385e934":[0,0,113,27], -"class_workspace.html#a5c7dcb5b022b37bce0647aab42bc764a":[0,0,113,57], -"class_workspace.html#a61dd47c1c36cab51f67f6652e560b635":[0,0,113,36], -"class_workspace.html#a6658ab0800105042a29b6fea1102f873":[0,0,113,50], -"class_workspace.html#a691c80813f2f2f15bfb79db5edddf22a":[0,0,113,42], -"class_workspace.html#a69ed8a7449993602944683f9a9584fe1":[0,0,113,45], -"class_workspace.html#a6c024a0381b8515287ff82a0c135a285":[0,0,113,14], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914":[0,0,113,0], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a094a29399033e02e51fd013eac5f8bc3":[0,0,113,0,3], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a253dcdbf5c54e7de2489b54098e29161":[0,0,113,0,5], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a32cb1102be505f27ae0255d9e3834acc":[0,0,113,0,4], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a36270dbb58538c00a5b009916dda4748":[0,0,113,0,9], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a3e1fead750fbde2a9bf75f457f387e1c":[0,0,113,0,1], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a3f2c5b345a9ac7d8dfcd2b51a6becc2c":[0,0,113,0,0], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a48963bc6da69eeee46985e57383a6831":[0,0,113,0,10], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a92c16301deb027b1bad37c54f7432482":[0,0,113,0,6], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a94ed0030aad40a766af3d97b8cbb55df":[0,0,113,0,7], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a990ae713f0e72eab71de6b77c3bf412f":[0,0,113,0,11], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914ae98c91e3a672a7b48020d41234f65056":[0,0,113,0,2], -"class_workspace.html#a6c46f1e54734c198b47134fa829f5914aff456a8f97d89f415295642cfc4e7411":[0,0,113,0,8], -"class_workspace.html#a6d84b8d85526f1194667606429a3a315":[0,0,113,56], -"class_workspace.html#a6e1788b16636c60be5bf0b0bbc0a3a26":[0,0,113,33], -"class_workspace.html#a6e5a3440a86e3afc1336740aac1efbe1":[0,0,113,22], -"class_workspace.html#a6f2dcf924f95cb2b2216057a0fc53f41":[0,0,113,10], -"class_workspace.html#a709ba1bac8061b82a91e225effd22621":[0,0,113,15], -"class_workspace.html#a735b10c59c133a6c81be7432a8978e8b":[0,0,113,13], -"class_workspace.html#a758abd23ac6f327899e9761da653b40e":[0,0,113,17], -"class_workspace.html#a773f2c59738a7b546e032509822aaba4":[0,0,113,61], -"class_workspace.html#a7a940cc3edfa6da2ecc4f3555eb2259b":[0,0,113,46], -"class_workspace.html#a810b16fadd522ab40335c7533e051d6f":[0,0,113,28], -"class_workspace.html#a82d91c594e8ae5d2dc72ea4384abe24f":[0,0,113,12], -"class_workspace.html#a8372edc7102baabc9170836c40548084":[0,0,113,38], -"class_workspace.html#a8677426ffcd80c3fa76ba2f8d6c402d5":[0,0,113,11], -"class_workspace.html#a8af383b55580f7b02eea83df03d125b9":[0,0,113,39] +"class_transformer_form_base.html#ae2196cf62a3c277247a112d7971872b0":[0,0,112,78] }; diff --git a/docs/doxygen/html/navtreeindex12.js b/docs/doxygen/html/navtreeindex12.js index 59df8ab..ecbd50c 100644 --- a/docs/doxygen/html/navtreeindex12.js +++ b/docs/doxygen/html/navtreeindex12.js @@ -1,5 +1,68 @@ var NAVTREEINDEX12 = { +"class_transformer_form_base.html#ae7a24e53da32b8caf67fc5ef39618743":[0,0,112,54], +"class_transformer_form_base.html#aee0b43085f009f2517994967d080b794":[0,0,112,7], +"class_transformer_form_base.html#aee7759b13cf93e4722e7514f4ddcfa8f":[0,0,112,39], +"class_transformer_form_base.html#af01e4be05d790d0a2236846899418b53":[0,0,112,19], +"class_transformer_form_base.html#af088bc27c75828d7829f18c4c4a5d7df":[0,0,112,64], +"class_transformer_form_base.html#af1394f18900292398f9f317341f1e727":[0,0,112,25], +"class_transformer_form_base.html#af65e4801b524b44b075a6218777777f0":[0,0,112,47], +"class_workspace.html":[0,0,113], +"class_workspace.html#a013bdfced9e47c0a11d378409cda1376":[0,0,113,62], +"class_workspace.html#a057257829453518249ebc0fc971c2a68":[0,0,113,47], +"class_workspace.html#a0f25d318ff7310d11e510239953b92fc":[0,0,113,8], +"class_workspace.html#a10c751ef894a1ce02ca401a0a60b3333":[0,0,113,3], +"class_workspace.html#a16047d114ac4c9708eccf87ddc93c57f":[0,0,113,59], +"class_workspace.html#a16b55585d4fa51fc3a565df2ce16997e":[0,0,113,69], +"class_workspace.html#a239e2b579a4c1b640b4f5e2640c61044":[0,0,113,70], +"class_workspace.html#a259249b912ae1caae1c166eb2f9f4123":[0,0,113,25], +"class_workspace.html#a26add99100a783d857b52fe497d5a209":[0,0,113,71], +"class_workspace.html#a29e232a2810f36222f0b1ba2f775f606":[0,0,113,5], +"class_workspace.html#a2c1f915ba189d1dc3b9088fd79b2f31a":[0,0,113,54], +"class_workspace.html#a38a886655d99aae4dbaeec88e7f855ce":[0,0,113,19], +"class_workspace.html#a3ffd9682e5898f467b54748c5277e239":[0,0,113,2], +"class_workspace.html#a444c05695fd50548fa025a97567e8a55":[0,0,113,73], +"class_workspace.html#a47405d47dd54d98cd0b5e323a5cf9071":[0,0,113,43], +"class_workspace.html#a49bec4c0ddb83d1bcfe4bb6cdf688864":[0,0,113,21], +"class_workspace.html#a4fa9ee617ed7da22b84eced403bb512e":[0,0,113,48], +"class_workspace.html#a52b015440855fbab2ae1ba7a229a36c7":[0,0,113,31], +"class_workspace.html#a5347e4a880ed744ef20da988aaac534f":[0,0,113,72], +"class_workspace.html#a58e7526fe48d3fbff16c7bf7ac607b0c":[0,0,113,35], +"class_workspace.html#a5b71e0ec48f1d9ae1ce9e01b546c01b1":[0,0,113,18], +"class_workspace.html#a5bc77206269e7abdd75085b90385e934":[0,0,113,27], +"class_workspace.html#a5c7dcb5b022b37bce0647aab42bc764a":[0,0,113,57], +"class_workspace.html#a61dd47c1c36cab51f67f6652e560b635":[0,0,113,36], +"class_workspace.html#a6658ab0800105042a29b6fea1102f873":[0,0,113,50], +"class_workspace.html#a691c80813f2f2f15bfb79db5edddf22a":[0,0,113,42], +"class_workspace.html#a69ed8a7449993602944683f9a9584fe1":[0,0,113,45], +"class_workspace.html#a6c024a0381b8515287ff82a0c135a285":[0,0,113,14], +"class_workspace.html#a6c46f1e54734c198b47134fa829f5914":[0,0,113,0], +"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a094a29399033e02e51fd013eac5f8bc3":[0,0,113,0,3], +"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a253dcdbf5c54e7de2489b54098e29161":[0,0,113,0,5], +"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a32cb1102be505f27ae0255d9e3834acc":[0,0,113,0,4], +"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a36270dbb58538c00a5b009916dda4748":[0,0,113,0,9], +"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a3e1fead750fbde2a9bf75f457f387e1c":[0,0,113,0,1], +"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a3f2c5b345a9ac7d8dfcd2b51a6becc2c":[0,0,113,0,0], +"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a48963bc6da69eeee46985e57383a6831":[0,0,113,0,10], +"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a92c16301deb027b1bad37c54f7432482":[0,0,113,0,6], +"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a94ed0030aad40a766af3d97b8cbb55df":[0,0,113,0,7], +"class_workspace.html#a6c46f1e54734c198b47134fa829f5914a990ae713f0e72eab71de6b77c3bf412f":[0,0,113,0,11], +"class_workspace.html#a6c46f1e54734c198b47134fa829f5914ae98c91e3a672a7b48020d41234f65056":[0,0,113,0,2], +"class_workspace.html#a6c46f1e54734c198b47134fa829f5914aff456a8f97d89f415295642cfc4e7411":[0,0,113,0,8], +"class_workspace.html#a6d84b8d85526f1194667606429a3a315":[0,0,113,56], +"class_workspace.html#a6e1788b16636c60be5bf0b0bbc0a3a26":[0,0,113,33], +"class_workspace.html#a6e5a3440a86e3afc1336740aac1efbe1":[0,0,113,22], +"class_workspace.html#a6f2dcf924f95cb2b2216057a0fc53f41":[0,0,113,10], +"class_workspace.html#a709ba1bac8061b82a91e225effd22621":[0,0,113,15], +"class_workspace.html#a735b10c59c133a6c81be7432a8978e8b":[0,0,113,13], +"class_workspace.html#a758abd23ac6f327899e9761da653b40e":[0,0,113,17], +"class_workspace.html#a773f2c59738a7b546e032509822aaba4":[0,0,113,61], +"class_workspace.html#a7a940cc3edfa6da2ecc4f3555eb2259b":[0,0,113,46], +"class_workspace.html#a810b16fadd522ab40335c7533e051d6f":[0,0,113,28], +"class_workspace.html#a82d91c594e8ae5d2dc72ea4384abe24f":[0,0,113,12], +"class_workspace.html#a8372edc7102baabc9170836c40548084":[0,0,113,38], +"class_workspace.html#a8677426ffcd80c3fa76ba2f8d6c402d5":[0,0,113,11], +"class_workspace.html#a8af383b55580f7b02eea83df03d125b9":[0,0,113,39], "class_workspace.html#a8b7645ec6641e9eff52f9d6b8e12b84e":[0,0,113,65], "class_workspace.html#a8cce4d1259bccce5f7b19ac3284be60e":[0,0,113,4], "class_workspace.html#a916173d5babcda8af782015e80e3e2ae":[0,0,113,51], @@ -186,68 +249,5 @@ var NAVTREEINDEX12 = "struct_elements_lists.html":[0,0,31], "struct_elements_lists.html#aa6137d73278aeb5bab520411fb4444c8":[0,0,31,1], "struct_elements_lists.html#abb2f2cb73aca2858cc9140040633b0ba":[0,0,31,0], -"struct_general_data.html":[0,0,40], -"struct_general_data.html#ab52356d45c62ade32d080b3244f0b3ef":[0,0,40,0], -"struct_general_data.html#aff6d4b38646366581a264e66a0a8e6d0":[0,0,40,1], -"struct_ind_motor_electrical_data.html":[0,0,47], -"struct_ind_motor_electrical_data.html#a27de229ce7940bfc15afc3601801dc1a":[0,0,47,1], -"struct_ind_motor_electrical_data.html#a638909bb25e0e0957799bce28db54bd0":[0,0,47,2], -"struct_ind_motor_electrical_data.html#ac42218e06dcb3b4a5cf54ec9c5cd6cf5":[0,0,47,3], -"struct_ind_motor_electrical_data.html#ad7ccd4886668a2e1fa94a14741966927":[0,0,47,0], -"struct_ind_motor_electrical_data.html#ae44b69b6c535a61c979bc6e7bfc86a41":[0,0,47,4], -"struct_inductor_electrical_data.html":[0,0,51], -"struct_inductor_electrical_data.html#a351fa53fe312f5436f101e57dcf1dff6":[0,0,51,0], -"struct_inductor_electrical_data.html#a930f07d78c71de5b0bf62f5e1c07987d":[0,0,51,2], -"struct_inductor_electrical_data.html#ab7816f138d77f1396aebb20987385ed2":[0,0,51,1], -"struct_integration_constant.html":[0,0,52], -"struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65":[0,0,52,1], -"struct_integration_constant.html#afc3598097377951b84492d087a06b455":[0,0,52,0], -"struct_line_electrical_data.html":[0,0,60], -"struct_line_electrical_data.html#a1056c7122fa5908c61e76ded862a31e5":[0,0,60,7], -"struct_line_electrical_data.html#a30b887f127806b28ba96b7710f04ff3f":[0,0,60,14], -"struct_line_electrical_data.html#a33cfcc0ab29d3be0fd6ddf8032805d1b":[0,0,60,0], -"struct_line_electrical_data.html#a509ce35959baf0ce23f1db73cd7de6a6":[0,0,60,15], -"struct_line_electrical_data.html#a57774b1ee3f36e450b7a80dca48d5bca":[0,0,60,4], -"struct_line_electrical_data.html#a678eec3a4ecaf9dde526bcbc3f422c49":[0,0,60,3], -"struct_line_electrical_data.html#a6bfc865edf42d04035a34a623a9664e0":[0,0,60,9], -"struct_line_electrical_data.html#a6fca3b0840b2e2711b2065396e04977a":[0,0,60,10], -"struct_line_electrical_data.html#a73510824a3d47cad10f6d4e47568d308":[0,0,60,8], -"struct_line_electrical_data.html#a7ac07247cc0a8fb661dacf3caeb9276a":[0,0,60,2], -"struct_line_electrical_data.html#a7f04322f6dfda0b47243e9f836728ada":[0,0,60,11], -"struct_line_electrical_data.html#a8852b0441c519c8e8f2507a1b796123a":[0,0,60,6], -"struct_line_electrical_data.html#a9a978a31a88e51f76cd481dd05c89c39":[0,0,60,17], -"struct_line_electrical_data.html#ab26c2c88d5ced5a99a0df1670777d37b":[0,0,60,12], -"struct_line_electrical_data.html#aba6808c87d6305c813ea12f022f03e43":[0,0,60,16], -"struct_line_electrical_data.html#ad67a555abe1b5c45866ca98f549591fe":[0,0,60,13], -"struct_line_electrical_data.html#ae02c7ccf7c5b34c3e026496235084fd6":[0,0,60,5], -"struct_line_electrical_data.html#ae07e759b48bbf409fd796a7662b7e7fb":[0,0,60,1], -"struct_line_electrical_data.html#ae0a5ff6c4bb36cd6b671d3b8ac95bcf2":[0,0,60,18], -"struct_load_electrical_data.html":[0,0,64], -"struct_load_electrical_data.html#a0d3eacb5817ec49d2894d3dfd12385ab":[0,0,64,1], -"struct_load_electrical_data.html#a5bc888d7d2e6b4b4d43a4a7d5f05e69c":[0,0,64,0], -"struct_load_electrical_data.html#a9026df8866348f10a154c5996700ab40":[0,0,64,3], -"struct_load_electrical_data.html#acd145e04317402c89cc03ba258a61a98":[0,0,64,5], -"struct_load_electrical_data.html#ad5541520b5febfc4111296e2c1b8862e":[0,0,64,2], -"struct_load_electrical_data.html#af0ea7a82b7b7a99f29debc03b1f7fbd3":[0,0,64,4], -"struct_reactive_limits.html":[0,0,81], -"struct_reactive_limits.html#a75d18e88f580e6573923139fc7736f14":[0,0,81,2], -"struct_reactive_limits.html#a91673f0f2c3d93f376265931ff2f6ee5":[0,0,81,4], -"struct_reactive_limits.html#ab6b953f8c1dec53d2fe5d0e8ac8d42cd":[0,0,81,1], -"struct_reactive_limits.html#ae74269f642fb45328b112762c39613c0":[0,0,81,3], -"struct_reactive_limits.html#ae857e3f04853ff3a91f6876314a382e6":[0,0,81,0], -"struct_simulation_data.html":[0,0,85], -"struct_simulation_data.html#a10954746e67fdbc89860f3718ed23ee9":[0,0,85,4], -"struct_simulation_data.html#a18355fc645416844735b2496700aefab":[0,0,85,15], -"struct_simulation_data.html#a2b7408c3a9f2dacc35099bbce451c261":[0,0,85,11], -"struct_simulation_data.html#a367edc643dd9b6eca8413c666d1a02c1":[0,0,85,9], -"struct_simulation_data.html#a3cf2e7f71bf62e323b60e0ddb997266a":[0,0,85,5], -"struct_simulation_data.html#a4caa71c540375ce8c86da5edbc0048c6":[0,0,85,8], -"struct_simulation_data.html#a4f00f14bee3145127e12023088e92dcf":[0,0,85,2], -"struct_simulation_data.html#a75d5bdfb0ad45f3e901b73877dd5d394":[0,0,85,0], -"struct_simulation_data.html#a845385f5d00d4f2481782cbc5bb8d77f":[0,0,85,10], -"struct_simulation_data.html#ab5a905d2b287348696596e9f07fcd552":[0,0,85,1], -"struct_simulation_data.html#ab8e32dc510771960d6d6612e80ddbae6":[0,0,85,7], -"struct_simulation_data.html#ac8073342d75faf98fb15ff5100fdc711":[0,0,85,13], -"struct_simulation_data.html#ac9bad1814e79451a2fd2f6afcee7016b":[0,0,85,12], -"struct_simulation_data.html#adf9aa7a02213374ac15439e8929f0179":[0,0,85,6] +"struct_general_data.html":[0,0,40] }; diff --git a/docs/doxygen/html/navtreeindex13.js b/docs/doxygen/html/navtreeindex13.js index a7e0ef2..43614a3 100644 --- a/docs/doxygen/html/navtreeindex13.js +++ b/docs/doxygen/html/navtreeindex13.js @@ -1,5 +1,68 @@ var NAVTREEINDEX13 = { +"struct_general_data.html#ab52356d45c62ade32d080b3244f0b3ef":[0,0,40,0], +"struct_general_data.html#aff6d4b38646366581a264e66a0a8e6d0":[0,0,40,1], +"struct_ind_motor_electrical_data.html":[0,0,47], +"struct_ind_motor_electrical_data.html#a27de229ce7940bfc15afc3601801dc1a":[0,0,47,1], +"struct_ind_motor_electrical_data.html#a638909bb25e0e0957799bce28db54bd0":[0,0,47,2], +"struct_ind_motor_electrical_data.html#ac42218e06dcb3b4a5cf54ec9c5cd6cf5":[0,0,47,3], +"struct_ind_motor_electrical_data.html#ad7ccd4886668a2e1fa94a14741966927":[0,0,47,0], +"struct_ind_motor_electrical_data.html#ae44b69b6c535a61c979bc6e7bfc86a41":[0,0,47,4], +"struct_inductor_electrical_data.html":[0,0,51], +"struct_inductor_electrical_data.html#a351fa53fe312f5436f101e57dcf1dff6":[0,0,51,0], +"struct_inductor_electrical_data.html#a930f07d78c71de5b0bf62f5e1c07987d":[0,0,51,2], +"struct_inductor_electrical_data.html#ab7816f138d77f1396aebb20987385ed2":[0,0,51,1], +"struct_integration_constant.html":[0,0,52], +"struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65":[0,0,52,1], +"struct_integration_constant.html#afc3598097377951b84492d087a06b455":[0,0,52,0], +"struct_line_electrical_data.html":[0,0,60], +"struct_line_electrical_data.html#a1056c7122fa5908c61e76ded862a31e5":[0,0,60,7], +"struct_line_electrical_data.html#a30b887f127806b28ba96b7710f04ff3f":[0,0,60,14], +"struct_line_electrical_data.html#a33cfcc0ab29d3be0fd6ddf8032805d1b":[0,0,60,0], +"struct_line_electrical_data.html#a509ce35959baf0ce23f1db73cd7de6a6":[0,0,60,15], +"struct_line_electrical_data.html#a57774b1ee3f36e450b7a80dca48d5bca":[0,0,60,4], +"struct_line_electrical_data.html#a678eec3a4ecaf9dde526bcbc3f422c49":[0,0,60,3], +"struct_line_electrical_data.html#a6bfc865edf42d04035a34a623a9664e0":[0,0,60,9], +"struct_line_electrical_data.html#a6fca3b0840b2e2711b2065396e04977a":[0,0,60,10], +"struct_line_electrical_data.html#a73510824a3d47cad10f6d4e47568d308":[0,0,60,8], +"struct_line_electrical_data.html#a7ac07247cc0a8fb661dacf3caeb9276a":[0,0,60,2], +"struct_line_electrical_data.html#a7f04322f6dfda0b47243e9f836728ada":[0,0,60,11], +"struct_line_electrical_data.html#a8852b0441c519c8e8f2507a1b796123a":[0,0,60,6], +"struct_line_electrical_data.html#a9a978a31a88e51f76cd481dd05c89c39":[0,0,60,17], +"struct_line_electrical_data.html#ab26c2c88d5ced5a99a0df1670777d37b":[0,0,60,12], +"struct_line_electrical_data.html#aba6808c87d6305c813ea12f022f03e43":[0,0,60,16], +"struct_line_electrical_data.html#ad67a555abe1b5c45866ca98f549591fe":[0,0,60,13], +"struct_line_electrical_data.html#ae02c7ccf7c5b34c3e026496235084fd6":[0,0,60,5], +"struct_line_electrical_data.html#ae07e759b48bbf409fd796a7662b7e7fb":[0,0,60,1], +"struct_line_electrical_data.html#ae0a5ff6c4bb36cd6b671d3b8ac95bcf2":[0,0,60,18], +"struct_load_electrical_data.html":[0,0,64], +"struct_load_electrical_data.html#a0d3eacb5817ec49d2894d3dfd12385ab":[0,0,64,1], +"struct_load_electrical_data.html#a5bc888d7d2e6b4b4d43a4a7d5f05e69c":[0,0,64,0], +"struct_load_electrical_data.html#a9026df8866348f10a154c5996700ab40":[0,0,64,3], +"struct_load_electrical_data.html#acd145e04317402c89cc03ba258a61a98":[0,0,64,5], +"struct_load_electrical_data.html#ad5541520b5febfc4111296e2c1b8862e":[0,0,64,2], +"struct_load_electrical_data.html#af0ea7a82b7b7a99f29debc03b1f7fbd3":[0,0,64,4], +"struct_reactive_limits.html":[0,0,81], +"struct_reactive_limits.html#a75d18e88f580e6573923139fc7736f14":[0,0,81,2], +"struct_reactive_limits.html#a91673f0f2c3d93f376265931ff2f6ee5":[0,0,81,4], +"struct_reactive_limits.html#ab6b953f8c1dec53d2fe5d0e8ac8d42cd":[0,0,81,1], +"struct_reactive_limits.html#ae74269f642fb45328b112762c39613c0":[0,0,81,3], +"struct_reactive_limits.html#ae857e3f04853ff3a91f6876314a382e6":[0,0,81,0], +"struct_simulation_data.html":[0,0,85], +"struct_simulation_data.html#a10954746e67fdbc89860f3718ed23ee9":[0,0,85,4], +"struct_simulation_data.html#a18355fc645416844735b2496700aefab":[0,0,85,15], +"struct_simulation_data.html#a2b7408c3a9f2dacc35099bbce451c261":[0,0,85,11], +"struct_simulation_data.html#a367edc643dd9b6eca8413c666d1a02c1":[0,0,85,9], +"struct_simulation_data.html#a3cf2e7f71bf62e323b60e0ddb997266a":[0,0,85,5], +"struct_simulation_data.html#a4caa71c540375ce8c86da5edbc0048c6":[0,0,85,8], +"struct_simulation_data.html#a4f00f14bee3145127e12023088e92dcf":[0,0,85,2], +"struct_simulation_data.html#a75d5bdfb0ad45f3e901b73877dd5d394":[0,0,85,0], +"struct_simulation_data.html#a845385f5d00d4f2481782cbc5bb8d77f":[0,0,85,10], +"struct_simulation_data.html#ab5a905d2b287348696596e9f07fcd552":[0,0,85,1], +"struct_simulation_data.html#ab8e32dc510771960d6d6612e80ddbae6":[0,0,85,7], +"struct_simulation_data.html#ac8073342d75faf98fb15ff5100fdc711":[0,0,85,13], +"struct_simulation_data.html#ac9bad1814e79451a2fd2f6afcee7016b":[0,0,85,12], +"struct_simulation_data.html#adf9aa7a02213374ac15439e8929f0179":[0,0,85,6], "struct_simulation_data.html#af0ca3cdcc810fcba377e5c6e2bcd71b5":[0,0,85,14], "struct_simulation_data.html#af5b66ffff262e5d7c49835c1fb57b302":[0,0,85,3], "struct_switching_data.html":[0,0,91], @@ -186,21 +249,5 @@ var NAVTREEINDEX13 = "struct_transformer_electrical_data.html#a469a24e58338613b620de352ea06c13d":[0,0,110,4], "struct_transformer_electrical_data.html#a520014be18decacdfec876f3a23b68ae":[0,0,110,18], "struct_transformer_electrical_data.html#a55492dae7b4489903bb5a45b4d3b093a":[0,0,110,12], -"struct_transformer_electrical_data.html#a7cb4f1fbe494fa905c56d324a05a7b32":[0,0,110,5], -"struct_transformer_electrical_data.html#a8a90bbbcefecfe59505d86003354afdc":[0,0,110,16], -"struct_transformer_electrical_data.html#a900c1dfc24ebcca169fae8dfd4a3e6bd":[0,0,110,15], -"struct_transformer_electrical_data.html#a913f0ad1ba90018a13d7930670438a89":[0,0,110,21], -"struct_transformer_electrical_data.html#a9da8363e7eb19e805650db36d87fca93":[0,0,110,7], -"struct_transformer_electrical_data.html#aa450538f0a29571bef6e2785d3544bb2":[0,0,110,6], -"struct_transformer_electrical_data.html#aabe6d597ed902640f5c87f2cd2550364":[0,0,110,0], -"struct_transformer_electrical_data.html#ab6606d2f93aa369b7a3173e61d44c8f3":[0,0,110,24], -"struct_transformer_electrical_data.html#abae77eeb48d1a56cb10302f2b9aea38c":[0,0,110,17], -"struct_transformer_electrical_data.html#ac954927451779be66154613475143dc9":[0,0,110,11], -"struct_transformer_electrical_data.html#ad1a62e6b3f896f6a9d794f6b9e02f599":[0,0,110,9], -"struct_transformer_electrical_data.html#add161341c5cdd9c9ce93c34f9ace2c08":[0,0,110,20], -"struct_transformer_electrical_data.html#af19976dfba78777187211ab79581396e":[0,0,110,2], -"struct_transformer_electrical_data.html#af4454c28f422632359573496c40b70e4":[0,0,110,3], -"struct_transformer_electrical_data.html#afb45c8a86048551b51c399a1b72ff949":[0,0,110,23], -"wx_g_l_string_8cpp_source.html":[1,0,0,156], -"wx_g_l_string_8h_source.html":[1,0,0,157] +"struct_transformer_electrical_data.html#a7cb4f1fbe494fa905c56d324a05a7b32":[0,0,110,5] }; diff --git a/docs/doxygen/html/navtreeindex14.js b/docs/doxygen/html/navtreeindex14.js new file mode 100644 index 0000000..8dfc542 --- /dev/null +++ b/docs/doxygen/html/navtreeindex14.js @@ -0,0 +1,19 @@ +var NAVTREEINDEX14 = +{ +"struct_transformer_electrical_data.html#a8a90bbbcefecfe59505d86003354afdc":[0,0,110,16], +"struct_transformer_electrical_data.html#a900c1dfc24ebcca169fae8dfd4a3e6bd":[0,0,110,15], +"struct_transformer_electrical_data.html#a913f0ad1ba90018a13d7930670438a89":[0,0,110,21], +"struct_transformer_electrical_data.html#a9da8363e7eb19e805650db36d87fca93":[0,0,110,7], +"struct_transformer_electrical_data.html#aa450538f0a29571bef6e2785d3544bb2":[0,0,110,6], +"struct_transformer_electrical_data.html#aabe6d597ed902640f5c87f2cd2550364":[0,0,110,0], +"struct_transformer_electrical_data.html#ab6606d2f93aa369b7a3173e61d44c8f3":[0,0,110,24], +"struct_transformer_electrical_data.html#abae77eeb48d1a56cb10302f2b9aea38c":[0,0,110,17], +"struct_transformer_electrical_data.html#ac954927451779be66154613475143dc9":[0,0,110,11], +"struct_transformer_electrical_data.html#ad1a62e6b3f896f6a9d794f6b9e02f599":[0,0,110,9], +"struct_transformer_electrical_data.html#add161341c5cdd9c9ce93c34f9ace2c08":[0,0,110,20], +"struct_transformer_electrical_data.html#af19976dfba78777187211ab79581396e":[0,0,110,2], +"struct_transformer_electrical_data.html#af4454c28f422632359573496c40b70e4":[0,0,110,3], +"struct_transformer_electrical_data.html#afb45c8a86048551b51c399a1b72ff949":[0,0,110,23], +"wx_g_l_string_8cpp_source.html":[1,0,0,156], +"wx_g_l_string_8h_source.html":[1,0,0,157] +}; diff --git a/docs/doxygen/html/navtreeindex2.js b/docs/doxygen/html/navtreeindex2.js index 302c449..01fc5c6 100644 --- a/docs/doxygen/html/navtreeindex2.js +++ b/docs/doxygen/html/navtreeindex2.js @@ -1,5 +1,68 @@ var NAVTREEINDEX2 = { +"class_bus_form_base.html#a8731cdb29c22002ed2d63bceaba322a5":[0,0,6,86], +"class_bus_form_base.html#a8d5b1711fddb03dd93655a6427bdf482":[0,0,6,28], +"class_bus_form_base.html#a9737e676f0eb420635a0acf49a0f7f2e":[0,0,6,43], +"class_bus_form_base.html#a97c195c038c7bac1ec32d69c87d7f3b6":[0,0,6,38], +"class_bus_form_base.html#a9852553d782d38de865ba5c5960983a4":[0,0,6,15], +"class_bus_form_base.html#aa017dca9dccd43a28236173370b89bb3":[0,0,6,32], +"class_bus_form_base.html#aa206919e95a050a9c9b2a471e6b5c4c9":[0,0,6,87], +"class_bus_form_base.html#aa9546384b368a06197565391b6c38315":[0,0,6,49], +"class_bus_form_base.html#aaac7957c8de855891e7e102562ca722f":[0,0,6,30], +"class_bus_form_base.html#aac4df99b23e332ed5c950ddbc7247715":[0,0,6,41], +"class_bus_form_base.html#aad9b945cf9842a88b1e61085963eab7a":[0,0,6,42], +"class_bus_form_base.html#aae93403e83e2c7f5e2a769a2bffccd83":[0,0,6,40], +"class_bus_form_base.html#ab29a9e37fdfa9b3c20ce6aad1191ee69":[0,0,6,63], +"class_bus_form_base.html#ab4d194132dd3d327f33cbe91e324537a":[0,0,6,5], +"class_bus_form_base.html#ab51f67bf4aa7de715e867203af072a05":[0,0,6,83], +"class_bus_form_base.html#ab5b4dc715c6d9fde94f9cfa5a984bf11":[0,0,6,50], +"class_bus_form_base.html#ab73005fe27a337b523a5f272d4b82bea":[0,0,6,20], +"class_bus_form_base.html#abd3346fc4bdb1cf185138043359e324a":[0,0,6,19], +"class_bus_form_base.html#abf7d8daf69f4133fc8175a7653b8ff99":[0,0,6,23], +"class_bus_form_base.html#ac1120978e7aa07573b91813a8ae68a57":[0,0,6,0], +"class_bus_form_base.html#ac64b7fddaa3ffe0e7671b920495cfa9f":[0,0,6,14], +"class_bus_form_base.html#aca83346b86e9a3b13447111e109c99e3":[0,0,6,57], +"class_bus_form_base.html#ace34b60ad7f00f16e1b75994326cab45":[0,0,6,29], +"class_bus_form_base.html#acf8bd66a3a96a1eed23d011b987a0c3d":[0,0,6,2], +"class_bus_form_base.html#ad21eac8e9b4bae9eeb6d6b74b0504917":[0,0,6,3], +"class_bus_form_base.html#ad9c07ce14e481e6d20062ddeb3464675":[0,0,6,51], +"class_bus_form_base.html#ada95b25afb1d645438a2d19e580c996d":[0,0,6,10], +"class_bus_form_base.html#adac2978ce17e56e8ad03d2f7da7be343":[0,0,6,48], +"class_bus_form_base.html#adc4f4cf29badd77f8e648fddeef4ce94":[0,0,6,75], +"class_bus_form_base.html#ae423bd94fc53bce76329dcb7dafc524e":[0,0,6,31], +"class_bus_form_base.html#ae452c5575974492125f1568338c8b9ae":[0,0,6,17], +"class_bus_form_base.html#ae6c7cbbf7aa4fa53647b3a00f1c3fffc":[0,0,6,85], +"class_bus_form_base.html#ae9d2477b6b6cfbb03af205a96d5c4928":[0,0,6,80], +"class_bus_form_base.html#aedb47f128db9b468dd2a58ad73df74b1":[0,0,6,56], +"class_bus_form_base.html#af0c5a0347c1b7fd2a5bdaad95e4574e1":[0,0,6,44], +"class_bus_form_base.html#af259e49af9eaa04b29b193c73ba2d9de":[0,0,6,58], +"class_bus_form_base.html#af5b28bc2cd481ebc7a3bb99261727683":[0,0,6,45], +"class_bus_form_base.html#af5fbe5a2f9281bfaec01d0b6d158a71b":[0,0,6,73], +"class_bus_form_base.html#af8503eb53503f90af53b8206c16e4629":[0,0,6,79], +"class_bus_form_base.html#afb24ac3dd51199ac3984469bb7df3fce":[0,0,6,59], +"class_bus_form_base.html#afb7b2bed6e9d25865022dfd10baadc58":[0,0,6,81], +"class_bus_form_base.html#afc825c5f3a39d9853d82ae9f88a2b4c4":[0,0,6,4], +"class_bus_form_base.html#aff5d6c90e212f2ca0fa4856b65dcdb15":[0,0,6,35], +"class_bus_form_base.html#affaa6a2355ae588b3f6da69b92ba90b0":[0,0,6,34], +"class_bus_form_base.html#affdfd06744bc4def0c85f658f4682d60":[0,0,6,66], +"class_camera.html":[0,0,7], +"class_camera.html#a01f94c3543f56ede7af49dc778f19331":[0,0,7,0], +"class_camera.html#a0593049968c312454ac880588d6e4195":[0,0,7,7], +"class_camera.html#a0ef3092f83fe959ac5939c75e910bb3e":[0,0,7,12], +"class_camera.html#a2b81311bec97f4c7dfdd94c32416da85":[0,0,7,6], +"class_camera.html#a2df233cd73c2ca8486dfac9a4aff27ef":[0,0,7,14], +"class_camera.html#a3fb8d75e1dbaee73562a520eb0529d28":[0,0,7,5], +"class_camera.html#a46434cdf939f99eb9d7b6a6260c6954a":[0,0,7,17], +"class_camera.html#a464f3fde97dd3cf958a7152af31073f2":[0,0,7,2], +"class_camera.html#a4ddf44273d5228cea6b4b9a27c08dd6d":[0,0,7,11], +"class_camera.html#a4e9ee902f6c711187fb04ed7f90d2ef7":[0,0,7,3], +"class_camera.html#a6e54494ab24eb601949faa55c1d1654f":[0,0,7,8], +"class_camera.html#a7ea30c697691da07dd983c3395b210a8":[0,0,7,13], +"class_camera.html#a9831a7fda14d39b2fb1ec6c1141d88fc":[0,0,7,16], +"class_camera.html#abac6929baae257d9fb55e894371b140b":[0,0,7,10], +"class_camera.html#ad092fd057fb12a1d73214ecd81f8cde3":[0,0,7,4], +"class_camera.html#ad1897942d0ccf91052386388a497349f":[0,0,7,1], +"class_camera.html#aeb4eb52f0f05f5641cd71e4b8505e50a":[0,0,7,18], "class_camera.html#aefeb0e4d35db499c1049173f1c0be1c2":[0,0,7,15], "class_camera.html#aefeec0ff0adf22ed4e26b0e3f0c7fb38":[0,0,7,9], "class_capacitor.html":[0,0,8], @@ -186,68 +249,5 @@ var NAVTREEINDEX2 = "class_constant_form_base.html#aa56d043968b6ebdfdafbe30ca6d02569":[0,0,15,11], "class_constant_form_base.html#ab51a2d238d94e9e437af4eaf7e4d13f6":[0,0,15,1], "class_constant_form_base.html#acc606e8951953ebde5bbceb507148141":[0,0,15,14], -"class_constant_form_base.html#ad44906e7590449a0b71adcdc2c231422":[0,0,15,4], -"class_constant_form_base.html#ad9296d05ec4b36ef59108bf72ddfdaca":[0,0,15,9], -"class_constant_form_base.html#af77b45b748f679a1895c69578d0a62ce":[0,0,15,8], -"class_control_editor.html":[0,0,16], -"class_control_editor.html#a017c89c59e8a7cbd57468b7c9f20e4a1":[0,0,16,10], -"class_control_editor.html#a059661d8a819d7e42b91653ad3bc7edf":[0,0,16,47], -"class_control_editor.html#a0dce800f38cea7486f29b4b6b1ce07b4":[0,0,16,11], -"class_control_editor.html#a1f01fdd06ab4e520a62af5fcab087302":[0,0,16,41], -"class_control_editor.html#a1f12c0fcc5fe29c9c86a8af58bc78bb6":[0,0,16,20], -"class_control_editor.html#a1ff32f01ab5c2c3aeaf78ce545805a29":[0,0,16,28], -"class_control_editor.html#a212828bd1ce2012a6a5dc921f796a16e":[0,0,16,27], -"class_control_editor.html#a26af0c6457a955453712fb096e49c368":[0,0,16,15], -"class_control_editor.html#a27220dbc4068ed07d16331af81afb3ab":[0,0,16,1], -"class_control_editor.html#a2bf5a46f065abe95251e30ea6006eca3":[0,0,16,31], -"class_control_editor.html#a2f72be0c04ff7c86f227a1ed55c269fc":[0,0,16,30], -"class_control_editor.html#a308c45508097115b327974543d13f7ac":[0,0,16,13], -"class_control_editor.html#a369303f887fafe4ab0d7ef519cb52081":[0,0,16,16], -"class_control_editor.html#a399ce8936bf198d0ade2b4adccac22c5":[0,0,16,6], -"class_control_editor.html#a58321d531d6c368e00a6ada65d209343":[0,0,16,22], -"class_control_editor.html#a6507f967ce7383e2c6ca21c1a3d20cf6":[0,0,16,2], -"class_control_editor.html#a65eac228e45b35ea5e21b81a1633c08e":[0,0,16,17], -"class_control_editor.html#a71c5da7fb7270b80e3b1e82e14317b46":[0,0,16,34], -"class_control_editor.html#a76189d7ee879ef58c5b2d57dff2526cb":[0,0,16,48], -"class_control_editor.html#a7e1f15ddaba866993fab86b70920765d":[0,0,16,38], -"class_control_editor.html#a80699a8aa1b76917b108797c172cd680":[0,0,16,4], -"class_control_editor.html#a85b81e5fb2f4c96116c2b3eeaa419552":[0,0,16,44], -"class_control_editor.html#a8b951cd7445f6da64e85c2f8b524ff0f":[0,0,16,12], -"class_control_editor.html#a8cc0accd97433980a0cf0da4b7761208":[0,0,16,26], -"class_control_editor.html#a8f5a23ee9a041562aa1ef2337e117c0d":[0,0,16,18], -"class_control_editor.html#a90a6ad770299c3ae0603ff138f688de8":[0,0,16,8], -"class_control_editor.html#a925f1511d80b28c106b090eb4246d784":[0,0,16,25], -"class_control_editor.html#aa18dfbaac2dd3d98cdf5dee0a324a15e":[0,0,16,21], -"class_control_editor.html#aa48d04b70be526ffa03575ef60595566":[0,0,16,14], -"class_control_editor.html#aa6b664ecb8872c1f20203d85436f7e20":[0,0,16,19], -"class_control_editor.html#aa8582a8efc00e48fe96da0963c1cc18b":[0,0,16,46], -"class_control_editor.html#ab49ffbb72b94f9fc84b7db61be5a9bca":[0,0,16,39], -"class_control_editor.html#ab52287561b07d79f6a3c60b841790b91":[0,0,16,23], -"class_control_editor.html#aba8a6d65786800247603cf40a6c92d47":[0,0,16,29], -"class_control_editor.html#abc63499d3b4469db86a1f60c3260b8e6":[0,0,16,42], -"class_control_editor.html#ac3778ec996cc76c4182700889d18440e":[0,0,16,5], -"class_control_editor.html#ac3c08c1ee2f1d5d06bcc27925d5929bc":[0,0,16,35], -"class_control_editor.html#ac4cacf9ca99d8027a72a720053b10b61":[0,0,16,9], -"class_control_editor.html#ac6e551c5fee3258928f282981c289c1c":[0,0,16,36], -"class_control_editor.html#ace7afe649cfaf3e233374764c7855cbf":[0,0,16,24], -"class_control_editor.html#ad2f0a10ba40e0f0443919192c38f68ba":[0,0,16,45], -"class_control_editor.html#ad4fb540024c0f19e09c6b177c40c7653":[0,0,16,49], -"class_control_editor.html#ad525c39d3c545df03572971e6082b632":[0,0,16,37], -"class_control_editor.html#ada45fc959e8d3e1078a57d2e48cf5766":[0,0,16,3], -"class_control_editor.html#adade1f7f85eaf3406536371787aea54d":[0,0,16,32], -"class_control_editor.html#ae02c4f6a57f265dca61b0d610c133045":[0,0,16,33], -"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8":[0,0,16,0], -"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a22dafcbdb1931bb48c86b7bd9d68dc75":[0,0,16,0,8], -"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a48253406e150aa9937e3550adcd8e21a":[0,0,16,0,2], -"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a49eb503591225443520212e1cbf82e96":[0,0,16,0,7], -"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a4f27d3a6e627373c6dab49206d3c5396":[0,0,16,0,0], -"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a539fa4f367d4a743a91449b5563c69cc":[0,0,16,0,1], -"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a56c3cfc721af75f0b0f97b3756e98b3c":[0,0,16,0,4], -"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a8067d7e02113c1a950938cc2c3ae36ee":[0,0,16,0,3], -"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8ad9848ec4aa8e8d35eca5b0ffe2fa5a8c":[0,0,16,0,5], -"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8ae6f5f5a536ef36085f4ed1737d04ea4b":[0,0,16,0,6], -"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8af573caddb989c1933e55550dd547a832":[0,0,16,0,9], -"class_control_editor.html#ae4b1d8d1b470336cce4183a1bbd5d068":[0,0,16,7], -"class_control_editor.html#aea00a18800e7da75aecc926a9d0db3be":[0,0,16,43], -"class_control_editor.html#aede55dc44f1bcc87ffd3e004dcb902be":[0,0,16,40] +"class_constant_form_base.html#ad44906e7590449a0b71adcdc2c231422":[0,0,15,4] }; diff --git a/docs/doxygen/html/navtreeindex3.js b/docs/doxygen/html/navtreeindex3.js index 641564a..c3dbac0 100644 --- a/docs/doxygen/html/navtreeindex3.js +++ b/docs/doxygen/html/navtreeindex3.js @@ -1,5 +1,68 @@ var NAVTREEINDEX3 = { +"class_constant_form_base.html#ad9296d05ec4b36ef59108bf72ddfdaca":[0,0,15,9], +"class_constant_form_base.html#af77b45b748f679a1895c69578d0a62ce":[0,0,15,8], +"class_control_editor.html":[0,0,16], +"class_control_editor.html#a017c89c59e8a7cbd57468b7c9f20e4a1":[0,0,16,10], +"class_control_editor.html#a059661d8a819d7e42b91653ad3bc7edf":[0,0,16,47], +"class_control_editor.html#a0dce800f38cea7486f29b4b6b1ce07b4":[0,0,16,11], +"class_control_editor.html#a1f01fdd06ab4e520a62af5fcab087302":[0,0,16,41], +"class_control_editor.html#a1f12c0fcc5fe29c9c86a8af58bc78bb6":[0,0,16,20], +"class_control_editor.html#a1ff32f01ab5c2c3aeaf78ce545805a29":[0,0,16,28], +"class_control_editor.html#a212828bd1ce2012a6a5dc921f796a16e":[0,0,16,27], +"class_control_editor.html#a26af0c6457a955453712fb096e49c368":[0,0,16,15], +"class_control_editor.html#a27220dbc4068ed07d16331af81afb3ab":[0,0,16,1], +"class_control_editor.html#a2bf5a46f065abe95251e30ea6006eca3":[0,0,16,31], +"class_control_editor.html#a2f72be0c04ff7c86f227a1ed55c269fc":[0,0,16,30], +"class_control_editor.html#a308c45508097115b327974543d13f7ac":[0,0,16,13], +"class_control_editor.html#a369303f887fafe4ab0d7ef519cb52081":[0,0,16,16], +"class_control_editor.html#a399ce8936bf198d0ade2b4adccac22c5":[0,0,16,6], +"class_control_editor.html#a58321d531d6c368e00a6ada65d209343":[0,0,16,22], +"class_control_editor.html#a6507f967ce7383e2c6ca21c1a3d20cf6":[0,0,16,2], +"class_control_editor.html#a65eac228e45b35ea5e21b81a1633c08e":[0,0,16,17], +"class_control_editor.html#a71c5da7fb7270b80e3b1e82e14317b46":[0,0,16,34], +"class_control_editor.html#a76189d7ee879ef58c5b2d57dff2526cb":[0,0,16,48], +"class_control_editor.html#a7e1f15ddaba866993fab86b70920765d":[0,0,16,38], +"class_control_editor.html#a80699a8aa1b76917b108797c172cd680":[0,0,16,4], +"class_control_editor.html#a85b81e5fb2f4c96116c2b3eeaa419552":[0,0,16,44], +"class_control_editor.html#a8b951cd7445f6da64e85c2f8b524ff0f":[0,0,16,12], +"class_control_editor.html#a8cc0accd97433980a0cf0da4b7761208":[0,0,16,26], +"class_control_editor.html#a8f5a23ee9a041562aa1ef2337e117c0d":[0,0,16,18], +"class_control_editor.html#a90a6ad770299c3ae0603ff138f688de8":[0,0,16,8], +"class_control_editor.html#a925f1511d80b28c106b090eb4246d784":[0,0,16,25], +"class_control_editor.html#aa18dfbaac2dd3d98cdf5dee0a324a15e":[0,0,16,21], +"class_control_editor.html#aa48d04b70be526ffa03575ef60595566":[0,0,16,14], +"class_control_editor.html#aa6b664ecb8872c1f20203d85436f7e20":[0,0,16,19], +"class_control_editor.html#aa8582a8efc00e48fe96da0963c1cc18b":[0,0,16,46], +"class_control_editor.html#ab49ffbb72b94f9fc84b7db61be5a9bca":[0,0,16,39], +"class_control_editor.html#ab52287561b07d79f6a3c60b841790b91":[0,0,16,23], +"class_control_editor.html#aba8a6d65786800247603cf40a6c92d47":[0,0,16,29], +"class_control_editor.html#abc63499d3b4469db86a1f60c3260b8e6":[0,0,16,42], +"class_control_editor.html#ac3778ec996cc76c4182700889d18440e":[0,0,16,5], +"class_control_editor.html#ac3c08c1ee2f1d5d06bcc27925d5929bc":[0,0,16,35], +"class_control_editor.html#ac4cacf9ca99d8027a72a720053b10b61":[0,0,16,9], +"class_control_editor.html#ac6e551c5fee3258928f282981c289c1c":[0,0,16,36], +"class_control_editor.html#ace7afe649cfaf3e233374764c7855cbf":[0,0,16,24], +"class_control_editor.html#ad2f0a10ba40e0f0443919192c38f68ba":[0,0,16,45], +"class_control_editor.html#ad4fb540024c0f19e09c6b177c40c7653":[0,0,16,49], +"class_control_editor.html#ad525c39d3c545df03572971e6082b632":[0,0,16,37], +"class_control_editor.html#ada45fc959e8d3e1078a57d2e48cf5766":[0,0,16,3], +"class_control_editor.html#adade1f7f85eaf3406536371787aea54d":[0,0,16,32], +"class_control_editor.html#ae02c4f6a57f265dca61b0d610c133045":[0,0,16,33], +"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8":[0,0,16,0], +"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a22dafcbdb1931bb48c86b7bd9d68dc75":[0,0,16,0,8], +"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a48253406e150aa9937e3550adcd8e21a":[0,0,16,0,2], +"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a49eb503591225443520212e1cbf82e96":[0,0,16,0,7], +"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a4f27d3a6e627373c6dab49206d3c5396":[0,0,16,0,0], +"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a539fa4f367d4a743a91449b5563c69cc":[0,0,16,0,1], +"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a56c3cfc721af75f0b0f97b3756e98b3c":[0,0,16,0,4], +"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8a8067d7e02113c1a950938cc2c3ae36ee":[0,0,16,0,3], +"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8ad9848ec4aa8e8d35eca5b0ffe2fa5a8c":[0,0,16,0,5], +"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8ae6f5f5a536ef36085f4ed1737d04ea4b":[0,0,16,0,6], +"class_control_editor.html#ae3dacc5ee13ae3f550c91fe6fae628b8af573caddb989c1933e55550dd547a832":[0,0,16,0,9], +"class_control_editor.html#ae4b1d8d1b470336cce4183a1bbd5d068":[0,0,16,7], +"class_control_editor.html#aea00a18800e7da75aecc926a9d0db3be":[0,0,16,43], +"class_control_editor.html#aede55dc44f1bcc87ffd3e004dcb902be":[0,0,16,40], "class_control_editor_base.html":[0,0,17], "class_control_editor_base.html#a0cb93fb185a758f8da7419ac5d79aef3":[0,0,17,7], "class_control_editor_base.html#a123e5eb632e5fdb92962ab6d8fa6534d":[0,0,17,25], @@ -186,68 +249,5 @@ var NAVTREEINDEX3 = "class_data_report.html#a42406bbfed5f6582226d527469361c6fab2b6e1490ef7e51c6128eefd8d666021":[0,0,24,0,7], "class_data_report.html#a42406bbfed5f6582226d527469361c6fae5523daf39a5206d2e7f23245fe1c22a":[0,0,24,0,0], "class_data_report.html#a4dbeb487be271380b23e860ec072f422":[0,0,24,11], -"class_data_report.html#a54606d99aae00983756299810bdf0801":[0,0,24,1], -"class_data_report.html#a65ae7767572792800630dbff4e1c0de7":[0,0,24,15], -"class_data_report.html#a669136a644ddad8558909c3d96a30a92":[0,0,24,22], -"class_data_report.html#a67144860d6d8aeaf03da3b2763d01134":[0,0,24,18], -"class_data_report.html#a6c91b45fa5dcd3b9b4f12416969a5f6d":[0,0,24,4], -"class_data_report.html#a6d0ac6a4ce3a000004099f933ca84d10":[0,0,24,25], -"class_data_report.html#a798f52eb95ec670aab01efa337e2cbaa":[0,0,24,26], -"class_data_report.html#a81b1ac0b4cffd3be147f4200b495035d":[0,0,24,17], -"class_data_report.html#a978c2c5c3d7a699183a3b65f0662e4ae":[0,0,24,19], -"class_data_report.html#aacd63ed5b36f20064cc47a2c98240541":[0,0,24,20], -"class_data_report.html#ab3f06b29024da52ede77391d13ed70ef":[0,0,24,3], -"class_data_report.html#abc6aae9ace104a0354d23825dd9b5c63":[0,0,24,8], -"class_data_report.html#ac1e9af69d11e7d2cac0ef308ed18453e":[0,0,24,5], -"class_data_report.html#ac8859079218e3058ad720ea8c95cc693":[0,0,24,13], -"class_data_report.html#ad731fd57a87b49904e5124a4d7a4ac8c":[0,0,24,14], -"class_data_report.html#ade9429ea8946d61811133f5ee19d71c1":[0,0,24,21], -"class_data_report.html#ae22805620b84389e3fb3b46a913fed60":[0,0,24,6], -"class_data_report.html#af420c9927f033d520d0af758f8fb2b55":[0,0,24,24], -"class_data_report_base.html":[0,0,25], -"class_data_report_base.html#a05f8face44508d1aeaed74bd90aedc5f":[0,0,25,8], -"class_data_report_base.html#a0e86c0b6571f9f9faf0c984f9e07cfcb":[0,0,25,37], -"class_data_report_base.html#a0eebacaa633b613bdd649bdbcb422410":[0,0,25,9], -"class_data_report_base.html#a17b7e28b5cd82ed304267d08e3c9920f":[0,0,25,33], -"class_data_report_base.html#a1eb8b9a1b5592a217093d68482e6749b":[0,0,25,27], -"class_data_report_base.html#a35d383e43aa6cca57929da8d7292d2fe":[0,0,25,6], -"class_data_report_base.html#a3fefcee0754a6fca728462af3e1fb39d":[0,0,25,20], -"class_data_report_base.html#a4d17d1f30cbd2df6f616af95ec5a9167":[0,0,25,14], -"class_data_report_base.html#a501768c9af2f296192aa03f1f66c34b3":[0,0,25,30], -"class_data_report_base.html#a53257937c0aa833fd866c638c8ef91a2":[0,0,25,44], -"class_data_report_base.html#a56555ee9e6cac86175348d0a4670bfcd":[0,0,25,25], -"class_data_report_base.html#a59da9a86fc1aefd31959f17072df25db":[0,0,25,38], -"class_data_report_base.html#a5c5ddcf31cf589e98322f6e027db4a92":[0,0,25,40], -"class_data_report_base.html#a5e2843bb13d0258a71da822929bd8da9":[0,0,25,10], -"class_data_report_base.html#a5e91f382af53613cfb0300c2139b63f8":[0,0,25,22], -"class_data_report_base.html#a60502b5242b655ff40ab06c9bc1e7412":[0,0,25,32], -"class_data_report_base.html#a61b00ca0503ae498b9f069ba912c7dcd":[0,0,25,15], -"class_data_report_base.html#a6475523c24ccedd1e0f24d8441157e51":[0,0,25,23], -"class_data_report_base.html#a65f3d4b84a45a7a150231d4778af2f12":[0,0,25,29], -"class_data_report_base.html#a6bb9df3992f47c01a9eb7a35b7029dfb":[0,0,25,45], -"class_data_report_base.html#a7cbb8a6abf561e298207aa9df4c693de":[0,0,25,19], -"class_data_report_base.html#a81d634255632c7bee811c87231315a71":[0,0,25,26], -"class_data_report_base.html#a8bc1d7673467f44105675823edead52c":[0,0,25,16], -"class_data_report_base.html#a8ea052770a22ff2b2703f5b054c7fbfa":[0,0,25,1], -"class_data_report_base.html#a99a52a84c556ece7ac063c6886fea050":[0,0,25,39], -"class_data_report_base.html#aad916336d9ce8e14d9e28d3b84b657b0":[0,0,25,11], -"class_data_report_base.html#aaeb78a77e3dc7fc84539c94b7b5062ac":[0,0,25,17], -"class_data_report_base.html#aaf57262097ab280f3a4038bc5f189597":[0,0,25,2], -"class_data_report_base.html#abae4be0c78bc5e3378349377228b2197":[0,0,25,24], -"class_data_report_base.html#abc8a2b756618d3a885172e056605f1ef":[0,0,25,41], -"class_data_report_base.html#abcf9302bd7d4b02ec6820626c19c1dec":[0,0,25,43], -"class_data_report_base.html#ac29ac3c92b4a1cf54b4d0d80576e21b4":[0,0,25,18], -"class_data_report_base.html#ac81eb9b33dbf722a58ccde2baddc6620":[0,0,25,0], -"class_data_report_base.html#ac851a5d9a1a5ddb5cd7221a3dc32275d":[0,0,25,4], -"class_data_report_base.html#ac85f9742c6b150684c00b87aee50e63d":[0,0,25,35], -"class_data_report_base.html#acddd56e459bf7f0a42335158046e9a70":[0,0,25,34], -"class_data_report_base.html#acee6b32d5bc31c1307db454a2de69ee5":[0,0,25,5], -"class_data_report_base.html#ad2cc797e25ef56a3885421f72b32dda8":[0,0,25,21], -"class_data_report_base.html#ad7ab5d13a86ba6d8beb3a2c39a5c3bdd":[0,0,25,28], -"class_data_report_base.html#adac5a461ed09a4ac36202a0016707e11":[0,0,25,31], -"class_data_report_base.html#adc786b8343022dafbaf53d4e431a090d":[0,0,25,13], -"class_data_report_base.html#adf8b55cd980934b9d5f6582493b688a0":[0,0,25,36], -"class_data_report_base.html#aee8021cec2e859cca2318801449222ea":[0,0,25,46], -"class_data_report_base.html#aeffec8eaed4992ba98bb3edd40a684d8":[0,0,25,42], -"class_data_report_base.html#af14bc6a653ffa84a301d6a2ceb4a9d04":[0,0,25,3] +"class_data_report.html#a54606d99aae00983756299810bdf0801":[0,0,24,1] }; diff --git a/docs/doxygen/html/navtreeindex4.js b/docs/doxygen/html/navtreeindex4.js index 37ad3ff..2e9fc0f 100644 --- a/docs/doxygen/html/navtreeindex4.js +++ b/docs/doxygen/html/navtreeindex4.js @@ -1,5 +1,68 @@ var NAVTREEINDEX4 = { +"class_data_report.html#a65ae7767572792800630dbff4e1c0de7":[0,0,24,15], +"class_data_report.html#a669136a644ddad8558909c3d96a30a92":[0,0,24,22], +"class_data_report.html#a67144860d6d8aeaf03da3b2763d01134":[0,0,24,18], +"class_data_report.html#a6c91b45fa5dcd3b9b4f12416969a5f6d":[0,0,24,4], +"class_data_report.html#a6d0ac6a4ce3a000004099f933ca84d10":[0,0,24,25], +"class_data_report.html#a798f52eb95ec670aab01efa337e2cbaa":[0,0,24,26], +"class_data_report.html#a81b1ac0b4cffd3be147f4200b495035d":[0,0,24,17], +"class_data_report.html#a978c2c5c3d7a699183a3b65f0662e4ae":[0,0,24,19], +"class_data_report.html#aacd63ed5b36f20064cc47a2c98240541":[0,0,24,20], +"class_data_report.html#ab3f06b29024da52ede77391d13ed70ef":[0,0,24,3], +"class_data_report.html#abc6aae9ace104a0354d23825dd9b5c63":[0,0,24,8], +"class_data_report.html#ac1e9af69d11e7d2cac0ef308ed18453e":[0,0,24,5], +"class_data_report.html#ac8859079218e3058ad720ea8c95cc693":[0,0,24,13], +"class_data_report.html#ad731fd57a87b49904e5124a4d7a4ac8c":[0,0,24,14], +"class_data_report.html#ade9429ea8946d61811133f5ee19d71c1":[0,0,24,21], +"class_data_report.html#ae22805620b84389e3fb3b46a913fed60":[0,0,24,6], +"class_data_report.html#af420c9927f033d520d0af758f8fb2b55":[0,0,24,24], +"class_data_report_base.html":[0,0,25], +"class_data_report_base.html#a05f8face44508d1aeaed74bd90aedc5f":[0,0,25,8], +"class_data_report_base.html#a0e86c0b6571f9f9faf0c984f9e07cfcb":[0,0,25,37], +"class_data_report_base.html#a0eebacaa633b613bdd649bdbcb422410":[0,0,25,9], +"class_data_report_base.html#a17b7e28b5cd82ed304267d08e3c9920f":[0,0,25,33], +"class_data_report_base.html#a1eb8b9a1b5592a217093d68482e6749b":[0,0,25,27], +"class_data_report_base.html#a35d383e43aa6cca57929da8d7292d2fe":[0,0,25,6], +"class_data_report_base.html#a3fefcee0754a6fca728462af3e1fb39d":[0,0,25,20], +"class_data_report_base.html#a4d17d1f30cbd2df6f616af95ec5a9167":[0,0,25,14], +"class_data_report_base.html#a501768c9af2f296192aa03f1f66c34b3":[0,0,25,30], +"class_data_report_base.html#a53257937c0aa833fd866c638c8ef91a2":[0,0,25,44], +"class_data_report_base.html#a56555ee9e6cac86175348d0a4670bfcd":[0,0,25,25], +"class_data_report_base.html#a59da9a86fc1aefd31959f17072df25db":[0,0,25,38], +"class_data_report_base.html#a5c5ddcf31cf589e98322f6e027db4a92":[0,0,25,40], +"class_data_report_base.html#a5e2843bb13d0258a71da822929bd8da9":[0,0,25,10], +"class_data_report_base.html#a5e91f382af53613cfb0300c2139b63f8":[0,0,25,22], +"class_data_report_base.html#a60502b5242b655ff40ab06c9bc1e7412":[0,0,25,32], +"class_data_report_base.html#a61b00ca0503ae498b9f069ba912c7dcd":[0,0,25,15], +"class_data_report_base.html#a6475523c24ccedd1e0f24d8441157e51":[0,0,25,23], +"class_data_report_base.html#a65f3d4b84a45a7a150231d4778af2f12":[0,0,25,29], +"class_data_report_base.html#a6bb9df3992f47c01a9eb7a35b7029dfb":[0,0,25,45], +"class_data_report_base.html#a7cbb8a6abf561e298207aa9df4c693de":[0,0,25,19], +"class_data_report_base.html#a81d634255632c7bee811c87231315a71":[0,0,25,26], +"class_data_report_base.html#a8bc1d7673467f44105675823edead52c":[0,0,25,16], +"class_data_report_base.html#a8ea052770a22ff2b2703f5b054c7fbfa":[0,0,25,1], +"class_data_report_base.html#a99a52a84c556ece7ac063c6886fea050":[0,0,25,39], +"class_data_report_base.html#aad916336d9ce8e14d9e28d3b84b657b0":[0,0,25,11], +"class_data_report_base.html#aaeb78a77e3dc7fc84539c94b7b5062ac":[0,0,25,17], +"class_data_report_base.html#aaf57262097ab280f3a4038bc5f189597":[0,0,25,2], +"class_data_report_base.html#abae4be0c78bc5e3378349377228b2197":[0,0,25,24], +"class_data_report_base.html#abc8a2b756618d3a885172e056605f1ef":[0,0,25,41], +"class_data_report_base.html#abcf9302bd7d4b02ec6820626c19c1dec":[0,0,25,43], +"class_data_report_base.html#ac29ac3c92b4a1cf54b4d0d80576e21b4":[0,0,25,18], +"class_data_report_base.html#ac81eb9b33dbf722a58ccde2baddc6620":[0,0,25,0], +"class_data_report_base.html#ac851a5d9a1a5ddb5cd7221a3dc32275d":[0,0,25,4], +"class_data_report_base.html#ac85f9742c6b150684c00b87aee50e63d":[0,0,25,35], +"class_data_report_base.html#acddd56e459bf7f0a42335158046e9a70":[0,0,25,34], +"class_data_report_base.html#acee6b32d5bc31c1307db454a2de69ee5":[0,0,25,5], +"class_data_report_base.html#ad2cc797e25ef56a3885421f72b32dda8":[0,0,25,21], +"class_data_report_base.html#ad7ab5d13a86ba6d8beb3a2c39a5c3bdd":[0,0,25,28], +"class_data_report_base.html#adac5a461ed09a4ac36202a0016707e11":[0,0,25,31], +"class_data_report_base.html#adc786b8343022dafbaf53d4e431a090d":[0,0,25,13], +"class_data_report_base.html#adf8b55cd980934b9d5f6582493b688a0":[0,0,25,36], +"class_data_report_base.html#aee8021cec2e859cca2318801449222ea":[0,0,25,46], +"class_data_report_base.html#aeffec8eaed4992ba98bb3edd40a684d8":[0,0,25,42], +"class_data_report_base.html#af14bc6a653ffa84a301d6a2ceb4a9d04":[0,0,25,3], "class_data_report_base.html#af7230eab205cf660e465b5a4ed36f41c":[0,0,25,7], "class_data_report_base.html#affdc5a9cd95a50e6438becb1d13015ed":[0,0,25,12], "class_electric_calculation.html":[0,0,26], @@ -186,68 +249,5 @@ var NAVTREEINDEX4 = "class_element.html#aff2870f5979a84a30c27917cb33271f9":[0,0,28,26], "class_element_data_object.html":[0,0,29], "class_element_data_object.html#a03443d03ab000804032c59031f09e99a":[0,0,29,2], -"class_element_data_object.html#a062f11db713de77f36e98a3d79e25aad":[0,0,29,3], -"class_element_data_object.html#a19995ba1b03a9566352e5bdf44d1370b":[0,0,29,6], -"class_element_data_object.html#a19dc80f27c83408b72c9c87ce15ac228":[0,0,29,4], -"class_element_data_object.html#a3da83a9dbd280969d26bee208e2566ac":[0,0,29,7], -"class_element_data_object.html#a470f40ac636d52bea0325192b44424a9":[0,0,29,1], -"class_element_data_object.html#a732347b84c15fdca2f10639c8a8345e4":[0,0,29,5], -"class_element_data_object.html#afd2fde28c57246b673322b8b630ff1e0":[0,0,29,0], -"class_element_plot_data.html":[0,0,30], -"class_element_plot_data.html#a245c2baf5822b5350ab4b42cb3c8c4d4":[0,0,30,7], -"class_element_plot_data.html#a24f2d0ec6e24db875913154cea9b6495":[0,0,30,15], -"class_element_plot_data.html#a26d9efeccd36ac4d3b77e9ccd7b07acb":[0,0,30,16], -"class_element_plot_data.html#a2a73f2f0bebe16f8ee0ebe21ac76a917":[0,0,30,4], -"class_element_plot_data.html#a3262fabe578847d44e7822cc697111b4":[0,0,30,17], -"class_element_plot_data.html#a383fedeea054f6115c999ffc93a0eb35":[0,0,30,23], -"class_element_plot_data.html#a3f2b3675a82f456df02efab7c69e4ec3":[0,0,30,1], -"class_element_plot_data.html#a522fea0dfaca21e17948a03a3bd3cc1e":[0,0,30,9], -"class_element_plot_data.html#a52621408fd886256e3f93970920bc840":[0,0,30,22], -"class_element_plot_data.html#a5618ae04d96b16e90cc54b97304e2d5c":[0,0,30,25], -"class_element_plot_data.html#a56e431bfc0e1074ce3b1ffd36a066271":[0,0,30,11], -"class_element_plot_data.html#a7157de114641e494358a21d0fd061e1a":[0,0,30,20], -"class_element_plot_data.html#a78e53dfd0407e5a006a1a46d0a0e7cfc":[0,0,30,12], -"class_element_plot_data.html#a7b7a5834b0cad53e84c9bd6cf86aa6ea":[0,0,30,18], -"class_element_plot_data.html#a8fa649bde6d4166329aa9d8c0d2eb39e":[0,0,30,14], -"class_element_plot_data.html#a9b103e1e9483b550200d87991d618615":[0,0,30,5], -"class_element_plot_data.html#aa0889ca6cb11f4f5b391d0dea9f97e8f":[0,0,30,21], -"class_element_plot_data.html#aa13b4ada1ce748bb6b622fa2f7da97b8":[0,0,30,24], -"class_element_plot_data.html#aa1bc5d5a782caf9c7f7a55db4387da26":[0,0,30,19], -"class_element_plot_data.html#aa52cd4374e4b1a3fd27010481d898982":[0,0,30,13], -"class_element_plot_data.html#aaaad30139bbd8a1b0e714bb7d1d8a85d":[0,0,30,26], -"class_element_plot_data.html#aadcb36aed66c077a44e321dd39e40192":[0,0,30,8], -"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6":[0,0,30,0], -"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a195e99d96b8ceb74b935610c8613ead8":[0,0,30,0,10], -"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a3ff875a4cab8537f81c71991cb130916":[0,0,30,0,11], -"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a40c3284dc7fe0008a9150b06c9971c21":[0,0,30,0,2], -"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a61df757e093501b573e4da76a652fa22":[0,0,30,0,1], -"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a64e18a4c6fab57ebacf178826a6b19f7":[0,0,30,0,3], -"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a75f81e37494ce492bff49fa4677dcddf":[0,0,30,0,0], -"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a97d4ddc3864572ad7ed8304b287aab61":[0,0,30,0,4], -"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6aac77aeb1a647c940d4e1e17a477126d0":[0,0,30,0,6], -"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6aadd1fc1983995b983485223be3b14916":[0,0,30,0,8], -"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6ad0415dca75f4048c1a66d736e0ed4d4e":[0,0,30,0,7], -"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6aed23fc5b7a7f072cb7d2c3e440a6531c":[0,0,30,0,5], -"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6af2e7b8e623153ce32d4a34ea80b6c7d2":[0,0,30,0,9], -"class_element_plot_data.html#acedb6f0b5c545e1bd9c12370adb1ffc7":[0,0,30,6], -"class_element_plot_data.html#aeb26f918104c765ceaa29947008c349e":[0,0,30,2], -"class_element_plot_data.html#af1ee05ddb475ff46af376fe212148c01":[0,0,30,3], -"class_element_plot_data.html#af71ccdc0beaf0acc8da959bab83ad9ed":[0,0,30,10], -"class_exponential.html":[0,0,32], -"class_exponential.html#a0714869ee8815119a6d76431bac767ea":[0,0,32,7], -"class_exponential.html#a0ebfd386bebb9a1f9d41a3eca0daed3b":[0,0,32,8], -"class_exponential.html#a0fcb1dfec0c927a22abab7135f6c3a00":[0,0,32,13], -"class_exponential.html#a38559206dd99fae84d4ed4dd7996dd8f":[0,0,32,11], -"class_exponential.html#a540b1a43045b9bb7c96d32825d15c95e":[0,0,32,6], -"class_exponential.html#a568f1cb2a910d054b67ffbef74c8c196":[0,0,32,12], -"class_exponential.html#a7961aca3918368d3778aa5866a14cbec":[0,0,32,5], -"class_exponential.html#a79eabfca357002f160b082a6df9f6f2b":[0,0,32,2], -"class_exponential.html#a851717c2bb412dfddea8a96ad7344ef0":[0,0,32,0], -"class_exponential.html#a85cda0dba6549828a9045e478e24609f":[0,0,32,4], -"class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d":[0,0,32,9], -"class_exponential.html#adf997c8c44ac0a3e0d76ba9e32ebb5ec":[0,0,32,1], -"class_exponential.html#ae8e635b32b5d6a8226a3654aa639094f":[0,0,32,10], -"class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339":[0,0,32,3], -"class_exponential_form.html":[0,0,33], -"class_exponential_form.html#a04ab824bc029df387aa38ca8b379206f":[0,0,33,5] +"class_element_data_object.html#a062f11db713de77f36e98a3d79e25aad":[0,0,29,3] }; diff --git a/docs/doxygen/html/navtreeindex5.js b/docs/doxygen/html/navtreeindex5.js index d4cde96..7066e5b 100644 --- a/docs/doxygen/html/navtreeindex5.js +++ b/docs/doxygen/html/navtreeindex5.js @@ -1,5 +1,68 @@ var NAVTREEINDEX5 = { +"class_element_data_object.html#a19995ba1b03a9566352e5bdf44d1370b":[0,0,29,6], +"class_element_data_object.html#a19dc80f27c83408b72c9c87ce15ac228":[0,0,29,4], +"class_element_data_object.html#a3da83a9dbd280969d26bee208e2566ac":[0,0,29,7], +"class_element_data_object.html#a470f40ac636d52bea0325192b44424a9":[0,0,29,1], +"class_element_data_object.html#a732347b84c15fdca2f10639c8a8345e4":[0,0,29,5], +"class_element_data_object.html#afd2fde28c57246b673322b8b630ff1e0":[0,0,29,0], +"class_element_plot_data.html":[0,0,30], +"class_element_plot_data.html#a245c2baf5822b5350ab4b42cb3c8c4d4":[0,0,30,7], +"class_element_plot_data.html#a24f2d0ec6e24db875913154cea9b6495":[0,0,30,15], +"class_element_plot_data.html#a26d9efeccd36ac4d3b77e9ccd7b07acb":[0,0,30,16], +"class_element_plot_data.html#a2a73f2f0bebe16f8ee0ebe21ac76a917":[0,0,30,4], +"class_element_plot_data.html#a3262fabe578847d44e7822cc697111b4":[0,0,30,17], +"class_element_plot_data.html#a383fedeea054f6115c999ffc93a0eb35":[0,0,30,23], +"class_element_plot_data.html#a3f2b3675a82f456df02efab7c69e4ec3":[0,0,30,1], +"class_element_plot_data.html#a522fea0dfaca21e17948a03a3bd3cc1e":[0,0,30,9], +"class_element_plot_data.html#a52621408fd886256e3f93970920bc840":[0,0,30,22], +"class_element_plot_data.html#a5618ae04d96b16e90cc54b97304e2d5c":[0,0,30,25], +"class_element_plot_data.html#a56e431bfc0e1074ce3b1ffd36a066271":[0,0,30,11], +"class_element_plot_data.html#a7157de114641e494358a21d0fd061e1a":[0,0,30,20], +"class_element_plot_data.html#a78e53dfd0407e5a006a1a46d0a0e7cfc":[0,0,30,12], +"class_element_plot_data.html#a7b7a5834b0cad53e84c9bd6cf86aa6ea":[0,0,30,18], +"class_element_plot_data.html#a8fa649bde6d4166329aa9d8c0d2eb39e":[0,0,30,14], +"class_element_plot_data.html#a9b103e1e9483b550200d87991d618615":[0,0,30,5], +"class_element_plot_data.html#aa0889ca6cb11f4f5b391d0dea9f97e8f":[0,0,30,21], +"class_element_plot_data.html#aa13b4ada1ce748bb6b622fa2f7da97b8":[0,0,30,24], +"class_element_plot_data.html#aa1bc5d5a782caf9c7f7a55db4387da26":[0,0,30,19], +"class_element_plot_data.html#aa52cd4374e4b1a3fd27010481d898982":[0,0,30,13], +"class_element_plot_data.html#aaaad30139bbd8a1b0e714bb7d1d8a85d":[0,0,30,26], +"class_element_plot_data.html#aadcb36aed66c077a44e321dd39e40192":[0,0,30,8], +"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6":[0,0,30,0], +"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a195e99d96b8ceb74b935610c8613ead8":[0,0,30,0,10], +"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a3ff875a4cab8537f81c71991cb130916":[0,0,30,0,11], +"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a40c3284dc7fe0008a9150b06c9971c21":[0,0,30,0,2], +"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a61df757e093501b573e4da76a652fa22":[0,0,30,0,1], +"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a64e18a4c6fab57ebacf178826a6b19f7":[0,0,30,0,3], +"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a75f81e37494ce492bff49fa4677dcddf":[0,0,30,0,0], +"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6a97d4ddc3864572ad7ed8304b287aab61":[0,0,30,0,4], +"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6aac77aeb1a647c940d4e1e17a477126d0":[0,0,30,0,6], +"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6aadd1fc1983995b983485223be3b14916":[0,0,30,0,8], +"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6ad0415dca75f4048c1a66d736e0ed4d4e":[0,0,30,0,7], +"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6aed23fc5b7a7f072cb7d2c3e440a6531c":[0,0,30,0,5], +"class_element_plot_data.html#acbc71f28886fca6d20f9410ab455e5e6af2e7b8e623153ce32d4a34ea80b6c7d2":[0,0,30,0,9], +"class_element_plot_data.html#acedb6f0b5c545e1bd9c12370adb1ffc7":[0,0,30,6], +"class_element_plot_data.html#aeb26f918104c765ceaa29947008c349e":[0,0,30,2], +"class_element_plot_data.html#af1ee05ddb475ff46af376fe212148c01":[0,0,30,3], +"class_element_plot_data.html#af71ccdc0beaf0acc8da959bab83ad9ed":[0,0,30,10], +"class_exponential.html":[0,0,32], +"class_exponential.html#a0714869ee8815119a6d76431bac767ea":[0,0,32,7], +"class_exponential.html#a0ebfd386bebb9a1f9d41a3eca0daed3b":[0,0,32,8], +"class_exponential.html#a0fcb1dfec0c927a22abab7135f6c3a00":[0,0,32,13], +"class_exponential.html#a38559206dd99fae84d4ed4dd7996dd8f":[0,0,32,11], +"class_exponential.html#a540b1a43045b9bb7c96d32825d15c95e":[0,0,32,6], +"class_exponential.html#a568f1cb2a910d054b67ffbef74c8c196":[0,0,32,12], +"class_exponential.html#a7961aca3918368d3778aa5866a14cbec":[0,0,32,5], +"class_exponential.html#a79eabfca357002f160b082a6df9f6f2b":[0,0,32,2], +"class_exponential.html#a851717c2bb412dfddea8a96ad7344ef0":[0,0,32,0], +"class_exponential.html#a85cda0dba6549828a9045e478e24609f":[0,0,32,4], +"class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d":[0,0,32,9], +"class_exponential.html#adf997c8c44ac0a3e0d76ba9e32ebb5ec":[0,0,32,1], +"class_exponential.html#ae8e635b32b5d6a8226a3654aa639094f":[0,0,32,10], +"class_exponential.html#af5f172e2f7ae7df0fc79b44b55355339":[0,0,32,3], +"class_exponential_form.html":[0,0,33], +"class_exponential_form.html#a04ab824bc029df387aa38ca8b379206f":[0,0,33,5], "class_exponential_form.html#a3c0b865be48a390d39b42a552afdd711":[0,0,33,1], "class_exponential_form.html#a4c3cd70d6128d58f330a0f992a91da1a":[0,0,33,0], "class_exponential_form.html#a8d3175dc7543f5612dcb04acf5e8fa0c":[0,0,33,3], @@ -186,68 +249,5 @@ var NAVTREEINDEX5 = "class_generator_stab_form_base.html#a28a2efcd2bad7faf6fb4d34139abbaa8":[0,0,44,111], "class_generator_stab_form_base.html#a29dfd5dbc8f0d30226ed3ce16d20fe33":[0,0,44,16], "class_generator_stab_form_base.html#a29e6fa3dc40f638b5d327373ac0e408f":[0,0,44,59], -"class_generator_stab_form_base.html#a2b5171368b74b27070df3b53254d7745":[0,0,44,78], -"class_generator_stab_form_base.html#a2bda5575654a49d342aefb1e4c8fbaef":[0,0,44,12], -"class_generator_stab_form_base.html#a2cb537d38520f0f1951ccc2026f527a3":[0,0,44,37], -"class_generator_stab_form_base.html#a2d96514e85ce3c427208d4f7bb945c1a":[0,0,44,46], -"class_generator_stab_form_base.html#a2e9f50b3aa0a7ecf5ff8b79b0c056906":[0,0,44,102], -"class_generator_stab_form_base.html#a3276da36307ca5cd6d2e2e5410682301":[0,0,44,31], -"class_generator_stab_form_base.html#a376d129380304880b44e8b8f7c119c1f":[0,0,44,9], -"class_generator_stab_form_base.html#a38089e4a120f059032ff94e1222b03c4":[0,0,44,48], -"class_generator_stab_form_base.html#a386ad0fb02ddfeb050a6d5d4e899fc09":[0,0,44,109], -"class_generator_stab_form_base.html#a3a049ab1330bc7b8c485ce33cd6e8836":[0,0,44,71], -"class_generator_stab_form_base.html#a404ef29f1248d852da321d6c4027538a":[0,0,44,74], -"class_generator_stab_form_base.html#a41b7f2e6af6c6ee9a95b0947034a8ec0":[0,0,44,22], -"class_generator_stab_form_base.html#a4295c5ea7291078a186bdf40095d666e":[0,0,44,113], -"class_generator_stab_form_base.html#a43477cec5f18d7fa8cfc4cbb6871a172":[0,0,44,73], -"class_generator_stab_form_base.html#a460c8176a0e5ae6e569bc129a2988960":[0,0,44,77], -"class_generator_stab_form_base.html#a4825041ea73a8e0345388c6e0e71cf74":[0,0,44,62], -"class_generator_stab_form_base.html#a4890f2b954164acc59d59487cce29a70":[0,0,44,72], -"class_generator_stab_form_base.html#a4b05d7737e0cf2307cb2d6e37145cf1f":[0,0,44,30], -"class_generator_stab_form_base.html#a4b225606d57d39e4a371fa27e275a1f9":[0,0,44,5], -"class_generator_stab_form_base.html#a5004f24c73c95336a92640180031b692":[0,0,44,69], -"class_generator_stab_form_base.html#a506d888c08b4cc1f727aa986fdf86ceb":[0,0,44,49], -"class_generator_stab_form_base.html#a51fdd73d564ca1cf1fa87ce39431da70":[0,0,44,3], -"class_generator_stab_form_base.html#a5473539c798b4eca8ae20a13d07708f0":[0,0,44,19], -"class_generator_stab_form_base.html#a57b954413ac47c20fb79434947e71e67":[0,0,44,64], -"class_generator_stab_form_base.html#a59b8c38ec0e7e1f547cb558952612b55":[0,0,44,24], -"class_generator_stab_form_base.html#a59e210f644c44c275b652d0b39e26fc8":[0,0,44,103], -"class_generator_stab_form_base.html#a5aac0bb16470ef6443c99585c8445b09":[0,0,44,55], -"class_generator_stab_form_base.html#a5e42cf0b5632665dd94a2df16c99c519":[0,0,44,21], -"class_generator_stab_form_base.html#a5fce6f358f2acb7403030ec01b2df79f":[0,0,44,14], -"class_generator_stab_form_base.html#a617a814f876388c5cf2770b71e0d036d":[0,0,44,66], -"class_generator_stab_form_base.html#a65422dbbdac862940d3c645dc32a8f60":[0,0,44,114], -"class_generator_stab_form_base.html#a672e1b7b873b9a5b4ae45e1131a31cd3":[0,0,44,56], -"class_generator_stab_form_base.html#a67931a6253aca464e3ea64653156a4ad":[0,0,44,83], -"class_generator_stab_form_base.html#a70320edb367b9b5fd356690f503a7773":[0,0,44,25], -"class_generator_stab_form_base.html#a72412627afc1f12e1fb1627a17052bb1":[0,0,44,95], -"class_generator_stab_form_base.html#a7248d2e4d7430738f48737e4fecc0b9b":[0,0,44,32], -"class_generator_stab_form_base.html#a72f8e66e91538326eb815371b4d6e967":[0,0,44,63], -"class_generator_stab_form_base.html#a73926cf9ccc7b6806732778637aa8b30":[0,0,44,18], -"class_generator_stab_form_base.html#a763fac09f09ea56005c2206b1c30d733":[0,0,44,0], -"class_generator_stab_form_base.html#a79c1373f45cf399bceb757dae8060d19":[0,0,44,87], -"class_generator_stab_form_base.html#a7db301857f418902cfacbbed747ee69a":[0,0,44,60], -"class_generator_stab_form_base.html#a7dcb3b5df3ca7a2465db8c2b610f1f8d":[0,0,44,100], -"class_generator_stab_form_base.html#a84873dfc35006449ef4fcba4ed7d0f4e":[0,0,44,67], -"class_generator_stab_form_base.html#a86a945f0ae8ad5be9402ddfdccf847f8":[0,0,44,23], -"class_generator_stab_form_base.html#a882959b444c06441832c6348c372d809":[0,0,44,70], -"class_generator_stab_form_base.html#a89e55bdba11ed2593788f08d477c68e8":[0,0,44,38], -"class_generator_stab_form_base.html#a8d5119db0ee2159313954c5af2f98583":[0,0,44,105], -"class_generator_stab_form_base.html#a90c3165863fac740d7120366741b394c":[0,0,44,42], -"class_generator_stab_form_base.html#a93c719731f4ef67cde780def182ccd53":[0,0,44,28], -"class_generator_stab_form_base.html#a96d2037062bf935f4be7b067d45e3259":[0,0,44,36], -"class_generator_stab_form_base.html#a97249e0a9b9157536230961874f39790":[0,0,44,39], -"class_generator_stab_form_base.html#a99b17f90dc5aaee56ba4c694b496da15":[0,0,44,10], -"class_generator_stab_form_base.html#a9b13914de4a6009967892e1f5182047f":[0,0,44,2], -"class_generator_stab_form_base.html#a9ff21aa7428e8e1fe9982b0f8e26cbff":[0,0,44,13], -"class_generator_stab_form_base.html#aa24e99dfa3412c3d2255feed1ef13263":[0,0,44,11], -"class_generator_stab_form_base.html#aa3e34810e40f7e6ba9c80a4f7476a6a8":[0,0,44,94], -"class_generator_stab_form_base.html#aa43448fc7590f38486ecb2c8ce866862":[0,0,44,98], -"class_generator_stab_form_base.html#aa93d0231fd249c7580da09370cf457f9":[0,0,44,43], -"class_generator_stab_form_base.html#aa956c76d8b62aed8a46baf6c4c89e875":[0,0,44,104], -"class_generator_stab_form_base.html#aaacb2de6430b853cc03f7b124294a227":[0,0,44,92], -"class_generator_stab_form_base.html#aad04072958142f172f665606f1ea7852":[0,0,44,116], -"class_generator_stab_form_base.html#aade642097ee0b63eedda4e551d69cbf8":[0,0,44,26], -"class_generator_stab_form_base.html#ab173aad50e838ed3a62be75fedb60e92":[0,0,44,81], -"class_generator_stab_form_base.html#ab176d40b9540799cd1e8fce5320fe1f1":[0,0,44,108] +"class_generator_stab_form_base.html#a2b5171368b74b27070df3b53254d7745":[0,0,44,78] }; diff --git a/docs/doxygen/html/navtreeindex6.js b/docs/doxygen/html/navtreeindex6.js index e87ef3c..72e7bd4 100644 --- a/docs/doxygen/html/navtreeindex6.js +++ b/docs/doxygen/html/navtreeindex6.js @@ -1,5 +1,68 @@ var NAVTREEINDEX6 = { +"class_generator_stab_form_base.html#a2bda5575654a49d342aefb1e4c8fbaef":[0,0,44,12], +"class_generator_stab_form_base.html#a2cb537d38520f0f1951ccc2026f527a3":[0,0,44,37], +"class_generator_stab_form_base.html#a2d96514e85ce3c427208d4f7bb945c1a":[0,0,44,46], +"class_generator_stab_form_base.html#a2e9f50b3aa0a7ecf5ff8b79b0c056906":[0,0,44,102], +"class_generator_stab_form_base.html#a3276da36307ca5cd6d2e2e5410682301":[0,0,44,31], +"class_generator_stab_form_base.html#a376d129380304880b44e8b8f7c119c1f":[0,0,44,9], +"class_generator_stab_form_base.html#a38089e4a120f059032ff94e1222b03c4":[0,0,44,48], +"class_generator_stab_form_base.html#a386ad0fb02ddfeb050a6d5d4e899fc09":[0,0,44,109], +"class_generator_stab_form_base.html#a3a049ab1330bc7b8c485ce33cd6e8836":[0,0,44,71], +"class_generator_stab_form_base.html#a404ef29f1248d852da321d6c4027538a":[0,0,44,74], +"class_generator_stab_form_base.html#a41b7f2e6af6c6ee9a95b0947034a8ec0":[0,0,44,22], +"class_generator_stab_form_base.html#a4295c5ea7291078a186bdf40095d666e":[0,0,44,113], +"class_generator_stab_form_base.html#a43477cec5f18d7fa8cfc4cbb6871a172":[0,0,44,73], +"class_generator_stab_form_base.html#a460c8176a0e5ae6e569bc129a2988960":[0,0,44,77], +"class_generator_stab_form_base.html#a4825041ea73a8e0345388c6e0e71cf74":[0,0,44,62], +"class_generator_stab_form_base.html#a4890f2b954164acc59d59487cce29a70":[0,0,44,72], +"class_generator_stab_form_base.html#a4b05d7737e0cf2307cb2d6e37145cf1f":[0,0,44,30], +"class_generator_stab_form_base.html#a4b225606d57d39e4a371fa27e275a1f9":[0,0,44,5], +"class_generator_stab_form_base.html#a5004f24c73c95336a92640180031b692":[0,0,44,69], +"class_generator_stab_form_base.html#a506d888c08b4cc1f727aa986fdf86ceb":[0,0,44,49], +"class_generator_stab_form_base.html#a51fdd73d564ca1cf1fa87ce39431da70":[0,0,44,3], +"class_generator_stab_form_base.html#a5473539c798b4eca8ae20a13d07708f0":[0,0,44,19], +"class_generator_stab_form_base.html#a57b954413ac47c20fb79434947e71e67":[0,0,44,64], +"class_generator_stab_form_base.html#a59b8c38ec0e7e1f547cb558952612b55":[0,0,44,24], +"class_generator_stab_form_base.html#a59e210f644c44c275b652d0b39e26fc8":[0,0,44,103], +"class_generator_stab_form_base.html#a5aac0bb16470ef6443c99585c8445b09":[0,0,44,55], +"class_generator_stab_form_base.html#a5e42cf0b5632665dd94a2df16c99c519":[0,0,44,21], +"class_generator_stab_form_base.html#a5fce6f358f2acb7403030ec01b2df79f":[0,0,44,14], +"class_generator_stab_form_base.html#a617a814f876388c5cf2770b71e0d036d":[0,0,44,66], +"class_generator_stab_form_base.html#a65422dbbdac862940d3c645dc32a8f60":[0,0,44,114], +"class_generator_stab_form_base.html#a672e1b7b873b9a5b4ae45e1131a31cd3":[0,0,44,56], +"class_generator_stab_form_base.html#a67931a6253aca464e3ea64653156a4ad":[0,0,44,83], +"class_generator_stab_form_base.html#a70320edb367b9b5fd356690f503a7773":[0,0,44,25], +"class_generator_stab_form_base.html#a72412627afc1f12e1fb1627a17052bb1":[0,0,44,95], +"class_generator_stab_form_base.html#a7248d2e4d7430738f48737e4fecc0b9b":[0,0,44,32], +"class_generator_stab_form_base.html#a72f8e66e91538326eb815371b4d6e967":[0,0,44,63], +"class_generator_stab_form_base.html#a73926cf9ccc7b6806732778637aa8b30":[0,0,44,18], +"class_generator_stab_form_base.html#a763fac09f09ea56005c2206b1c30d733":[0,0,44,0], +"class_generator_stab_form_base.html#a79c1373f45cf399bceb757dae8060d19":[0,0,44,87], +"class_generator_stab_form_base.html#a7db301857f418902cfacbbed747ee69a":[0,0,44,60], +"class_generator_stab_form_base.html#a7dcb3b5df3ca7a2465db8c2b610f1f8d":[0,0,44,100], +"class_generator_stab_form_base.html#a84873dfc35006449ef4fcba4ed7d0f4e":[0,0,44,67], +"class_generator_stab_form_base.html#a86a945f0ae8ad5be9402ddfdccf847f8":[0,0,44,23], +"class_generator_stab_form_base.html#a882959b444c06441832c6348c372d809":[0,0,44,70], +"class_generator_stab_form_base.html#a89e55bdba11ed2593788f08d477c68e8":[0,0,44,38], +"class_generator_stab_form_base.html#a8d5119db0ee2159313954c5af2f98583":[0,0,44,105], +"class_generator_stab_form_base.html#a90c3165863fac740d7120366741b394c":[0,0,44,42], +"class_generator_stab_form_base.html#a93c719731f4ef67cde780def182ccd53":[0,0,44,28], +"class_generator_stab_form_base.html#a96d2037062bf935f4be7b067d45e3259":[0,0,44,36], +"class_generator_stab_form_base.html#a97249e0a9b9157536230961874f39790":[0,0,44,39], +"class_generator_stab_form_base.html#a99b17f90dc5aaee56ba4c694b496da15":[0,0,44,10], +"class_generator_stab_form_base.html#a9b13914de4a6009967892e1f5182047f":[0,0,44,2], +"class_generator_stab_form_base.html#a9ff21aa7428e8e1fe9982b0f8e26cbff":[0,0,44,13], +"class_generator_stab_form_base.html#aa24e99dfa3412c3d2255feed1ef13263":[0,0,44,11], +"class_generator_stab_form_base.html#aa3e34810e40f7e6ba9c80a4f7476a6a8":[0,0,44,94], +"class_generator_stab_form_base.html#aa43448fc7590f38486ecb2c8ce866862":[0,0,44,98], +"class_generator_stab_form_base.html#aa93d0231fd249c7580da09370cf457f9":[0,0,44,43], +"class_generator_stab_form_base.html#aa956c76d8b62aed8a46baf6c4c89e875":[0,0,44,104], +"class_generator_stab_form_base.html#aaacb2de6430b853cc03f7b124294a227":[0,0,44,92], +"class_generator_stab_form_base.html#aad04072958142f172f665606f1ea7852":[0,0,44,116], +"class_generator_stab_form_base.html#aade642097ee0b63eedda4e551d69cbf8":[0,0,44,26], +"class_generator_stab_form_base.html#ab173aad50e838ed3a62be75fedb60e92":[0,0,44,81], +"class_generator_stab_form_base.html#ab176d40b9540799cd1e8fce5320fe1f1":[0,0,44,108], "class_generator_stab_form_base.html#ab83eed913a74588eeaec593e777d6903":[0,0,44,33], "class_generator_stab_form_base.html#ab95b366c7aa4649cea574ff416de5c7b":[0,0,44,4], "class_generator_stab_form_base.html#ab97d99294656418a22473bc428010df5":[0,0,44,57], @@ -186,68 +249,5 @@ var NAVTREEINDEX6 = "class_limiter.html#ab03497f0b51bfc74a98b7502942fe138":[0,0,56,15], "class_limiter.html#ab9c3aa47fd2fd4903be2dd600f658d25":[0,0,56,8], "class_limiter.html#ac6506d59da4ea682d9e556564ec3ad11":[0,0,56,2], -"class_limiter.html#ac9c1858dfc3b4d30b2eca0c4767a9f0e":[0,0,56,7], -"class_limiter_form.html":[0,0,57], -"class_limiter_form.html#a09752597455d2ec6cb3667d02bf934d3":[0,0,57,0], -"class_limiter_form.html#a511760d328e526a5f2a7ffec806e4d59":[0,0,57,4], -"class_limiter_form.html#a7d251ee840262b69434037ec1e715113":[0,0,57,2], -"class_limiter_form.html#a8195e63f0dcee76259c46ccdb2875e81":[0,0,57,1], -"class_limiter_form.html#a9bbbc6e83c9e604e62f2f000e9a41d60":[0,0,57,6], -"class_limiter_form.html#aabf2d0d5bac45cddd80dee0ed77df4d8":[0,0,57,3], -"class_limiter_form.html#adb4fae237f4911df3e63c99e7280dfe8":[0,0,57,5], -"class_limiter_form_base.html":[0,0,58], -"class_limiter_form_base.html#a191664a531538233edf3aa7c4432583b":[0,0,58,8], -"class_limiter_form_base.html#a1afd53788b2dfa94cf908c639f9bc632":[0,0,58,18], -"class_limiter_form_base.html#a39f50dee6cc270be5c21af4dfe0d98f6":[0,0,58,10], -"class_limiter_form_base.html#a3aa095dc672bdbfd106cc539a3b5e4a0":[0,0,58,14], -"class_limiter_form_base.html#a3b229b427923670555332825e8dd8e8e":[0,0,58,3], -"class_limiter_form_base.html#a3c5e871cb238fbcd7065ee2676c6ba91":[0,0,58,13], -"class_limiter_form_base.html#a50d5878344e634662470fc2f802528fa":[0,0,58,0], -"class_limiter_form_base.html#a58056787775c23456f2b95a0cb1543e3":[0,0,58,19], -"class_limiter_form_base.html#a88c42dd3f6e7123caa47ac4459cb1b18":[0,0,58,2], -"class_limiter_form_base.html#aa129024adb8eedaacf3e81564df2cf38":[0,0,58,4], -"class_limiter_form_base.html#aa80b8dbc483a971425e76f497cc0f6b6":[0,0,58,11], -"class_limiter_form_base.html#aaa967f3b7a80dc872ff50e002dcc7074":[0,0,58,12], -"class_limiter_form_base.html#ab521840a4a94533af12bc7731d288bc5":[0,0,58,6], -"class_limiter_form_base.html#ab52749fadfd077fcba9588b850c81c42":[0,0,58,17], -"class_limiter_form_base.html#abf72980e367c4f63ad7b819856bf689d":[0,0,58,9], -"class_limiter_form_base.html#abfa428980b4ae9a76e5f969f3ab09a65":[0,0,58,16], -"class_limiter_form_base.html#acc5c3953281a3a10b01ac90e8e296653":[0,0,58,7], -"class_limiter_form_base.html#ad76205083d27b1aa4bd122c1da863eb7":[0,0,58,15], -"class_limiter_form_base.html#af08f68c2f59dc29a36e0c7213ab6a92b":[0,0,58,5], -"class_limiter_form_base.html#aff9d3bd76d9f1ae53628cf46ced7f7c0":[0,0,58,1], -"class_line.html":[0,0,59], -"class_line.html#a0222046f2138af61b25f00f020e9f61d":[0,0,59,12], -"class_line.html#a046a7b2ebff50f237f73dbc182f7ff6f":[0,0,59,5], -"class_line.html#a05eb3761f198a058045f85d6e685ca97":[0,0,59,7], -"class_line.html#a125581fc6d21c83565b902751af331dc":[0,0,59,15], -"class_line.html#a1f3ef94716c52a357ecbcbdf00b0e072":[0,0,59,24], -"class_line.html#a24c6a659148f063c78e080a18f4517a1":[0,0,59,27], -"class_line.html#a26c69f7f703dca718edc28d5093934a3":[0,0,59,4], -"class_line.html#a297e12aa8ff0be5d344e245732487bdd":[0,0,59,8], -"class_line.html#a3eabf6de2af4ee71f72ce4f091c69978":[0,0,59,16], -"class_line.html#a400c8d0397ecdfe6c0a8380ee6bc7e1e":[0,0,59,26], -"class_line.html#a51e7bff578cd280464a70200fc323efc":[0,0,59,14], -"class_line.html#a5f1ac563f1c41bea65eef940bc729fdc":[0,0,59,30], -"class_line.html#a6d35082da4d30bd432b73b72dd86fadb":[0,0,59,23], -"class_line.html#a7c72fc585eb96bf9565cca0ce300cfd9":[0,0,59,9], -"class_line.html#a8eb3f030ead2466e25604abdc15d3009":[0,0,59,13], -"class_line.html#a978de0ff06b6f57401ade84045e1a55f":[0,0,59,10], -"class_line.html#a98c23237565bceefac0b107269ffa792":[0,0,59,20], -"class_line.html#aa146d6b0c7f3b74204f2c88dcbd7f4b0":[0,0,59,6], -"class_line.html#aa6838e31a8ac7fd55e3bfa088a4dcbb5":[0,0,59,22], -"class_line.html#aabe85f48d22d92b62257091f48174fac":[0,0,59,2], -"class_line.html#ab73d74778b5aa9807d21f156d15fadf7":[0,0,59,21], -"class_line.html#abb812387508a9971570bfa1d38e41041":[0,0,59,28], -"class_line.html#ac8be7d7136d86830c262280f51b79ea4":[0,0,59,17], -"class_line.html#aca44a17e46c68ad59060f9a83b400324":[0,0,59,1], -"class_line.html#acac760d9d67d9c4d007e03592d0e96b4":[0,0,59,19], -"class_line.html#acc11b8a429d8cdd63ba6803dff5602b3":[0,0,59,0], -"class_line.html#ad872f1221660ee6b856da5ad762e8046":[0,0,59,3], -"class_line.html#af9a931bdb7e0693cacae010a19b744e6":[0,0,59,25], -"class_line.html#afa37b7e5ecc3e208b1c404743e9d1758":[0,0,59,29], -"class_line.html#afa67498961416e645e0aa5358959ef1d":[0,0,59,18], -"class_line.html#afc4916268d2a32014e4ab0f8308165a1":[0,0,59,11], -"class_line_form.html":[0,0,61], -"class_line_form.html#a2d4f4eb4b8943b09c9dca207fb585bfd":[0,0,61,1] +"class_limiter.html#ac9c1858dfc3b4d30b2eca0c4767a9f0e":[0,0,56,7] }; diff --git a/docs/doxygen/html/navtreeindex7.js b/docs/doxygen/html/navtreeindex7.js index a50619e..42498c2 100644 --- a/docs/doxygen/html/navtreeindex7.js +++ b/docs/doxygen/html/navtreeindex7.js @@ -1,5 +1,68 @@ var NAVTREEINDEX7 = { +"class_limiter_form.html":[0,0,57], +"class_limiter_form.html#a09752597455d2ec6cb3667d02bf934d3":[0,0,57,0], +"class_limiter_form.html#a511760d328e526a5f2a7ffec806e4d59":[0,0,57,4], +"class_limiter_form.html#a7d251ee840262b69434037ec1e715113":[0,0,57,2], +"class_limiter_form.html#a8195e63f0dcee76259c46ccdb2875e81":[0,0,57,1], +"class_limiter_form.html#a9bbbc6e83c9e604e62f2f000e9a41d60":[0,0,57,6], +"class_limiter_form.html#aabf2d0d5bac45cddd80dee0ed77df4d8":[0,0,57,3], +"class_limiter_form.html#adb4fae237f4911df3e63c99e7280dfe8":[0,0,57,5], +"class_limiter_form_base.html":[0,0,58], +"class_limiter_form_base.html#a191664a531538233edf3aa7c4432583b":[0,0,58,8], +"class_limiter_form_base.html#a1afd53788b2dfa94cf908c639f9bc632":[0,0,58,18], +"class_limiter_form_base.html#a39f50dee6cc270be5c21af4dfe0d98f6":[0,0,58,10], +"class_limiter_form_base.html#a3aa095dc672bdbfd106cc539a3b5e4a0":[0,0,58,14], +"class_limiter_form_base.html#a3b229b427923670555332825e8dd8e8e":[0,0,58,3], +"class_limiter_form_base.html#a3c5e871cb238fbcd7065ee2676c6ba91":[0,0,58,13], +"class_limiter_form_base.html#a50d5878344e634662470fc2f802528fa":[0,0,58,0], +"class_limiter_form_base.html#a58056787775c23456f2b95a0cb1543e3":[0,0,58,19], +"class_limiter_form_base.html#a88c42dd3f6e7123caa47ac4459cb1b18":[0,0,58,2], +"class_limiter_form_base.html#aa129024adb8eedaacf3e81564df2cf38":[0,0,58,4], +"class_limiter_form_base.html#aa80b8dbc483a971425e76f497cc0f6b6":[0,0,58,11], +"class_limiter_form_base.html#aaa967f3b7a80dc872ff50e002dcc7074":[0,0,58,12], +"class_limiter_form_base.html#ab521840a4a94533af12bc7731d288bc5":[0,0,58,6], +"class_limiter_form_base.html#ab52749fadfd077fcba9588b850c81c42":[0,0,58,17], +"class_limiter_form_base.html#abf72980e367c4f63ad7b819856bf689d":[0,0,58,9], +"class_limiter_form_base.html#abfa428980b4ae9a76e5f969f3ab09a65":[0,0,58,16], +"class_limiter_form_base.html#acc5c3953281a3a10b01ac90e8e296653":[0,0,58,7], +"class_limiter_form_base.html#ad76205083d27b1aa4bd122c1da863eb7":[0,0,58,15], +"class_limiter_form_base.html#af08f68c2f59dc29a36e0c7213ab6a92b":[0,0,58,5], +"class_limiter_form_base.html#aff9d3bd76d9f1ae53628cf46ced7f7c0":[0,0,58,1], +"class_line.html":[0,0,59], +"class_line.html#a0222046f2138af61b25f00f020e9f61d":[0,0,59,12], +"class_line.html#a046a7b2ebff50f237f73dbc182f7ff6f":[0,0,59,5], +"class_line.html#a05eb3761f198a058045f85d6e685ca97":[0,0,59,7], +"class_line.html#a125581fc6d21c83565b902751af331dc":[0,0,59,15], +"class_line.html#a1f3ef94716c52a357ecbcbdf00b0e072":[0,0,59,24], +"class_line.html#a24c6a659148f063c78e080a18f4517a1":[0,0,59,27], +"class_line.html#a26c69f7f703dca718edc28d5093934a3":[0,0,59,4], +"class_line.html#a297e12aa8ff0be5d344e245732487bdd":[0,0,59,8], +"class_line.html#a3eabf6de2af4ee71f72ce4f091c69978":[0,0,59,16], +"class_line.html#a400c8d0397ecdfe6c0a8380ee6bc7e1e":[0,0,59,26], +"class_line.html#a51e7bff578cd280464a70200fc323efc":[0,0,59,14], +"class_line.html#a5f1ac563f1c41bea65eef940bc729fdc":[0,0,59,30], +"class_line.html#a6d35082da4d30bd432b73b72dd86fadb":[0,0,59,23], +"class_line.html#a7c72fc585eb96bf9565cca0ce300cfd9":[0,0,59,9], +"class_line.html#a8eb3f030ead2466e25604abdc15d3009":[0,0,59,13], +"class_line.html#a978de0ff06b6f57401ade84045e1a55f":[0,0,59,10], +"class_line.html#a98c23237565bceefac0b107269ffa792":[0,0,59,20], +"class_line.html#aa146d6b0c7f3b74204f2c88dcbd7f4b0":[0,0,59,6], +"class_line.html#aa6838e31a8ac7fd55e3bfa088a4dcbb5":[0,0,59,22], +"class_line.html#aabe85f48d22d92b62257091f48174fac":[0,0,59,2], +"class_line.html#ab73d74778b5aa9807d21f156d15fadf7":[0,0,59,21], +"class_line.html#abb812387508a9971570bfa1d38e41041":[0,0,59,28], +"class_line.html#ac8be7d7136d86830c262280f51b79ea4":[0,0,59,17], +"class_line.html#aca44a17e46c68ad59060f9a83b400324":[0,0,59,1], +"class_line.html#acac760d9d67d9c4d007e03592d0e96b4":[0,0,59,19], +"class_line.html#acc11b8a429d8cdd63ba6803dff5602b3":[0,0,59,0], +"class_line.html#ad872f1221660ee6b856da5ad762e8046":[0,0,59,3], +"class_line.html#af9a931bdb7e0693cacae010a19b744e6":[0,0,59,25], +"class_line.html#afa37b7e5ecc3e208b1c404743e9d1758":[0,0,59,29], +"class_line.html#afa67498961416e645e0aa5358959ef1d":[0,0,59,18], +"class_line.html#afc4916268d2a32014e4ab0f8308165a1":[0,0,59,11], +"class_line_form.html":[0,0,61], +"class_line_form.html#a2d4f4eb4b8943b09c9dca207fb585bfd":[0,0,61,1], "class_line_form.html#a3896cd6a6cc5500fe1935aa9b16d37ce":[0,0,61,0], "class_line_form.html#a40650c8cf031e57ad58b3c2b22dad0a1":[0,0,61,5], "class_line_form.html#a4b5d7e7696f936260c542dcd60810d38":[0,0,61,3], @@ -186,68 +249,5 @@ var NAVTREEINDEX7 = "class_main_frame.html#a3519cbc623ee5b589421012b749816bd":[0,0,69,22], "class_main_frame.html#a38697929eab5835946f68dc7680fee5a":[0,0,69,46], "class_main_frame.html#a3c62d86a7c8d207032d4f7f67bf85696":[0,0,69,12], -"class_main_frame.html#a3f8d2ccbf744a7159259da89cf7befb0":[0,0,69,18], -"class_main_frame.html#a4a1c9ab859e5fd8a4c76ea7e10276181":[0,0,69,16], -"class_main_frame.html#a51e7ed757e3a3b28f3043ec4e634bbc6":[0,0,69,29], -"class_main_frame.html#a5e86880ce3526fdcde3b7139a497480c":[0,0,69,15], -"class_main_frame.html#a667b44053cae174a361cfd21124ef995":[0,0,69,0], -"class_main_frame.html#a66d0737f956dafa8b68a3abae954961a":[0,0,69,14], -"class_main_frame.html#a821abe42b5a3334e4983849338f32b87":[0,0,69,7], -"class_main_frame.html#a864ac698cedcf5eece459cba8bdf30ae":[0,0,69,6], -"class_main_frame.html#a865a5828138dc9b559fcb0ad79c251a3":[0,0,69,42], -"class_main_frame.html#a88c766e242fb1efba27f0f0d2fb0a207":[0,0,69,45], -"class_main_frame.html#a8981e73c31352c5666b19bdd65283128":[0,0,69,35], -"class_main_frame.html#a8a12d2b7f7087d4da1ed25b3cf3c77b7":[0,0,69,20], -"class_main_frame.html#a9051b04100741c40b30ec71e0684b9b8":[0,0,69,25], -"class_main_frame.html#a9a6c94b9be7330b54ff983dab6d69d01":[0,0,69,39], -"class_main_frame.html#a9c882f6ee74c38423595a1ee8a83b081":[0,0,69,21], -"class_main_frame.html#aa30782a1fa801cf46cb461e388d57eb4":[0,0,69,43], -"class_main_frame.html#aa4086cd9eea4f143744af74a24f4905f":[0,0,69,38], -"class_main_frame.html#aade761601af16dadcbf24cd2a4e8d289":[0,0,69,3], -"class_main_frame.html#abe97a8d22d4604390a83664fac5f4c79":[0,0,69,5], -"class_main_frame.html#ac2616c3c46dcfe32c91e4ac35efc7710":[0,0,69,24], -"class_main_frame.html#ac3288e93c5b8682863574bc47c9e9ff8":[0,0,69,1], -"class_main_frame.html#ad1475f1bb8a05169b3d3d462008c887b":[0,0,69,4], -"class_main_frame.html#ad15ed016f2af7c23737cabb12eee172d":[0,0,69,28], -"class_main_frame.html#adfba2e2bca63d8ee779a0e4cf00a6de0":[0,0,69,26], -"class_main_frame.html#ae036a245cf66988cc9843518058e42a1":[0,0,69,40], -"class_main_frame.html#ae12044cdbd540650c33727c0b00f43a6":[0,0,69,34], -"class_main_frame.html#ae1828bcf3eb5dc93d87d15c0b7fe2c00":[0,0,69,32], -"class_main_frame.html#ae389c2b609acc84043bdba60ee50429b":[0,0,69,13], -"class_main_frame.html#ae5b67bc97c6f0947914fc54e30d4870c":[0,0,69,30], -"class_main_frame.html#ae9b83e83f45433f286be9ba801e677b2":[0,0,69,19], -"class_main_frame.html#af1f91fe7196afd71f28a9d0c6bce9b0b":[0,0,69,37], -"class_main_frame.html#af323a2d80574c5971479e07c806ab802":[0,0,69,17], -"class_main_frame.html#af5d801e4c8d27bddf3f821499bac5c43":[0,0,69,11], -"class_main_frame.html#affafa8bbfeb03218543c30f633222049":[0,0,69,23], -"class_main_frame_base.html":[0,0,70], -"class_main_frame_base.html#a0c5ddd0a8c40a6365aafcd177ce2e30d":[0,0,70,40], -"class_main_frame_base.html#a10b1f32d30bd2fe0ce3544bea85558fa":[0,0,70,66], -"class_main_frame_base.html#a15ea9168f20c0dbe5aa47bb32c7a87a6":[0,0,70,82], -"class_main_frame_base.html#a1a265795b31bd7441a171e1573c9d380":[0,0,70,61], -"class_main_frame_base.html#a1b9aeee7c4b805c99662637def269711":[0,0,70,45], -"class_main_frame_base.html#a1c033d9812ffc0c9bd01b5f005e7ffb3":[0,0,70,44], -"class_main_frame_base.html#a1d6d70e15d0f989976e455a64f2566fc":[0,0,70,38], -"class_main_frame_base.html#a23338767c35eb467b193b627202e12c9":[0,0,70,79], -"class_main_frame_base.html#a26e1b02a7ea70579c380bdd6c4dc31a7":[0,0,70,55], -"class_main_frame_base.html#a2ecc2370aadbece166b094af17f5dcf8":[0,0,70,83], -"class_main_frame_base.html#a3457f936ba83822397c8d4f4a84df5fa":[0,0,70,53], -"class_main_frame_base.html#a352ec58f623a1a85f1d5316b6cb9710b":[0,0,70,81], -"class_main_frame_base.html#a40a0e78731b78265becded185c5a275e":[0,0,70,62], -"class_main_frame_base.html#a40afd7ce469ac56b7bcb2a348455016a":[0,0,70,70], -"class_main_frame_base.html#a4866f5f2dfda1997d65b71c4462410ba":[0,0,70,56], -"class_main_frame_base.html#a4e8d29366f393bd6e7a5eb748a831576":[0,0,70,91], -"class_main_frame_base.html#a55524b4e3cbaf7250798156f902b2e99":[0,0,70,64], -"class_main_frame_base.html#a5c97dfc2c76cbbcb40fb6dac657586e2":[0,0,70,78], -"class_main_frame_base.html#a62c676a2ecb466e508bc00f27dcc3bf2":[0,0,70,67], -"class_main_frame_base.html#a637eec7668f51a13223a394c55a633cc":[0,0,70,34], -"class_main_frame_base.html#a6a612fb2db72258c900b81c81de60941":[0,0,70,65], -"class_main_frame_base.html#a6dec28080c2aa3ac073eec161ed833d6":[0,0,70,77], -"class_main_frame_base.html#a70cc8f142845c4f7042119f3f7ed7307":[0,0,70,85], -"class_main_frame_base.html#a7204ca3854b562f5df4b8735b2a16f9c":[0,0,70,51], -"class_main_frame_base.html#a736257ebafdffd5b249c7b4e50fab619":[0,0,70,57], -"class_main_frame_base.html#a7ac299975c041187b3be925d8423ee55":[0,0,70,50], -"class_main_frame_base.html#a7f28bf5e906cb1258bac365d4f92cd0b":[0,0,70,86], -"class_main_frame_base.html#a80b0b22053a0a0e3baad864237d32654":[0,0,70,48], -"class_main_frame_base.html#a81f31e1f089b59ad4e6c996d4f45294e":[0,0,70,75] +"class_main_frame.html#a3f8d2ccbf744a7159259da89cf7befb0":[0,0,69,18] }; diff --git a/docs/doxygen/html/navtreeindex8.js b/docs/doxygen/html/navtreeindex8.js index ec6c051..aacd91b 100644 --- a/docs/doxygen/html/navtreeindex8.js +++ b/docs/doxygen/html/navtreeindex8.js @@ -1,5 +1,68 @@ var NAVTREEINDEX8 = { +"class_main_frame.html#a4a1c9ab859e5fd8a4c76ea7e10276181":[0,0,69,16], +"class_main_frame.html#a51e7ed757e3a3b28f3043ec4e634bbc6":[0,0,69,29], +"class_main_frame.html#a5e86880ce3526fdcde3b7139a497480c":[0,0,69,15], +"class_main_frame.html#a667b44053cae174a361cfd21124ef995":[0,0,69,0], +"class_main_frame.html#a66d0737f956dafa8b68a3abae954961a":[0,0,69,14], +"class_main_frame.html#a821abe42b5a3334e4983849338f32b87":[0,0,69,7], +"class_main_frame.html#a864ac698cedcf5eece459cba8bdf30ae":[0,0,69,6], +"class_main_frame.html#a865a5828138dc9b559fcb0ad79c251a3":[0,0,69,42], +"class_main_frame.html#a88c766e242fb1efba27f0f0d2fb0a207":[0,0,69,45], +"class_main_frame.html#a8981e73c31352c5666b19bdd65283128":[0,0,69,35], +"class_main_frame.html#a8a12d2b7f7087d4da1ed25b3cf3c77b7":[0,0,69,20], +"class_main_frame.html#a9051b04100741c40b30ec71e0684b9b8":[0,0,69,25], +"class_main_frame.html#a9a6c94b9be7330b54ff983dab6d69d01":[0,0,69,39], +"class_main_frame.html#a9c882f6ee74c38423595a1ee8a83b081":[0,0,69,21], +"class_main_frame.html#aa30782a1fa801cf46cb461e388d57eb4":[0,0,69,43], +"class_main_frame.html#aa4086cd9eea4f143744af74a24f4905f":[0,0,69,38], +"class_main_frame.html#aade761601af16dadcbf24cd2a4e8d289":[0,0,69,3], +"class_main_frame.html#abe97a8d22d4604390a83664fac5f4c79":[0,0,69,5], +"class_main_frame.html#ac2616c3c46dcfe32c91e4ac35efc7710":[0,0,69,24], +"class_main_frame.html#ac3288e93c5b8682863574bc47c9e9ff8":[0,0,69,1], +"class_main_frame.html#ad1475f1bb8a05169b3d3d462008c887b":[0,0,69,4], +"class_main_frame.html#ad15ed016f2af7c23737cabb12eee172d":[0,0,69,28], +"class_main_frame.html#adfba2e2bca63d8ee779a0e4cf00a6de0":[0,0,69,26], +"class_main_frame.html#ae036a245cf66988cc9843518058e42a1":[0,0,69,40], +"class_main_frame.html#ae12044cdbd540650c33727c0b00f43a6":[0,0,69,34], +"class_main_frame.html#ae1828bcf3eb5dc93d87d15c0b7fe2c00":[0,0,69,32], +"class_main_frame.html#ae389c2b609acc84043bdba60ee50429b":[0,0,69,13], +"class_main_frame.html#ae5b67bc97c6f0947914fc54e30d4870c":[0,0,69,30], +"class_main_frame.html#ae9b83e83f45433f286be9ba801e677b2":[0,0,69,19], +"class_main_frame.html#af1f91fe7196afd71f28a9d0c6bce9b0b":[0,0,69,37], +"class_main_frame.html#af323a2d80574c5971479e07c806ab802":[0,0,69,17], +"class_main_frame.html#af5d801e4c8d27bddf3f821499bac5c43":[0,0,69,11], +"class_main_frame.html#affafa8bbfeb03218543c30f633222049":[0,0,69,23], +"class_main_frame_base.html":[0,0,70], +"class_main_frame_base.html#a0c5ddd0a8c40a6365aafcd177ce2e30d":[0,0,70,40], +"class_main_frame_base.html#a10b1f32d30bd2fe0ce3544bea85558fa":[0,0,70,66], +"class_main_frame_base.html#a15ea9168f20c0dbe5aa47bb32c7a87a6":[0,0,70,82], +"class_main_frame_base.html#a1a265795b31bd7441a171e1573c9d380":[0,0,70,61], +"class_main_frame_base.html#a1b9aeee7c4b805c99662637def269711":[0,0,70,45], +"class_main_frame_base.html#a1c033d9812ffc0c9bd01b5f005e7ffb3":[0,0,70,44], +"class_main_frame_base.html#a1d6d70e15d0f989976e455a64f2566fc":[0,0,70,38], +"class_main_frame_base.html#a23338767c35eb467b193b627202e12c9":[0,0,70,79], +"class_main_frame_base.html#a26e1b02a7ea70579c380bdd6c4dc31a7":[0,0,70,55], +"class_main_frame_base.html#a2ecc2370aadbece166b094af17f5dcf8":[0,0,70,83], +"class_main_frame_base.html#a3457f936ba83822397c8d4f4a84df5fa":[0,0,70,53], +"class_main_frame_base.html#a352ec58f623a1a85f1d5316b6cb9710b":[0,0,70,81], +"class_main_frame_base.html#a40a0e78731b78265becded185c5a275e":[0,0,70,62], +"class_main_frame_base.html#a40afd7ce469ac56b7bcb2a348455016a":[0,0,70,70], +"class_main_frame_base.html#a4866f5f2dfda1997d65b71c4462410ba":[0,0,70,56], +"class_main_frame_base.html#a4e8d29366f393bd6e7a5eb748a831576":[0,0,70,91], +"class_main_frame_base.html#a55524b4e3cbaf7250798156f902b2e99":[0,0,70,64], +"class_main_frame_base.html#a5c97dfc2c76cbbcb40fb6dac657586e2":[0,0,70,78], +"class_main_frame_base.html#a62c676a2ecb466e508bc00f27dcc3bf2":[0,0,70,67], +"class_main_frame_base.html#a637eec7668f51a13223a394c55a633cc":[0,0,70,34], +"class_main_frame_base.html#a6a612fb2db72258c900b81c81de60941":[0,0,70,65], +"class_main_frame_base.html#a6dec28080c2aa3ac073eec161ed833d6":[0,0,70,77], +"class_main_frame_base.html#a70cc8f142845c4f7042119f3f7ed7307":[0,0,70,85], +"class_main_frame_base.html#a7204ca3854b562f5df4b8735b2a16f9c":[0,0,70,51], +"class_main_frame_base.html#a736257ebafdffd5b249c7b4e50fab619":[0,0,70,57], +"class_main_frame_base.html#a7ac299975c041187b3be925d8423ee55":[0,0,70,50], +"class_main_frame_base.html#a7f28bf5e906cb1258bac365d4f92cd0b":[0,0,70,86], +"class_main_frame_base.html#a80b0b22053a0a0e3baad864237d32654":[0,0,70,48], +"class_main_frame_base.html#a81f31e1f089b59ad4e6c996d4f45294e":[0,0,70,75], "class_main_frame_base.html#a869092abc9913bb995eb36ec69db0405":[0,0,70,76], "class_main_frame_base.html#a8d11fbafd4b593c96595f6f72e8dbe3c":[0,0,70,63], "class_main_frame_base.html#a8ee60616644d83057b7d064045a21b3a":[0,0,70,46], @@ -186,68 +249,5 @@ var NAVTREEINDEX8 = "class_properties_data.html#ac5b9a703313321402feb0b630137554a":[0,0,77,0], "class_properties_data.html#ad3d2eb6ea7989c6759e9ea161e108529":[0,0,77,4], "class_rate_limiter.html":[0,0,78], -"class_rate_limiter.html#a1a4a1c1d6902a09996f3720c11657541":[0,0,78,0], -"class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29":[0,0,78,12], -"class_rate_limiter.html#a30bbe6f431699d625ccfeb56c344a8a7":[0,0,78,1], -"class_rate_limiter.html#a3eb4d933b1d069808617306c78835f3e":[0,0,78,8], -"class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823":[0,0,78,4], -"class_rate_limiter.html#a4fad133132702b282606ba3c11957c4e":[0,0,78,6], -"class_rate_limiter.html#a6a7584c54dec6b657fe82c86ba4050c7":[0,0,78,5], -"class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580":[0,0,78,3], -"class_rate_limiter.html#a7c1ce7440e82613b455054dd8447f147":[0,0,78,7], -"class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60":[0,0,78,11], -"class_rate_limiter.html#a9b33e6e0ff31d47e5a71ad667c394b3f":[0,0,78,10], -"class_rate_limiter.html#aab8ebea2ddf2925636d57f15c29a6f9f":[0,0,78,13], -"class_rate_limiter.html#ac9e938191a9cb73f2062424bb7ef3d6a":[0,0,78,9], -"class_rate_limiter.html#addf0eef395781b8584063a9061be59dc":[0,0,78,2], -"class_rate_limiter.html#af0f5379bd223db43561e02fc554af404":[0,0,78,14], -"class_rate_limiter.html#af879e6593015575abe9dc1751eee89a4":[0,0,78,15], -"class_rate_limiter_form.html":[0,0,79], -"class_rate_limiter_form.html#a113482f91d98929e9a886724943c54b5":[0,0,79,0], -"class_rate_limiter_form.html#a2890a4b61d498bd524a714de43b3e399":[0,0,79,4], -"class_rate_limiter_form.html#a32b0a27d6ec94f94f8f8c1e40c270877":[0,0,79,6], -"class_rate_limiter_form.html#aa64d34ca1a0d1ead7d63e7cefa9d1cf3":[0,0,79,1], -"class_rate_limiter_form.html#ace1a05e0ae6160a69a2a9faa6b7a3dc3":[0,0,79,3], -"class_rate_limiter_form.html#af19d40740af9ebb547036423ac091b28":[0,0,79,5], -"class_rate_limiter_form.html#af80f6d8f785e66546b3be7e514655e25":[0,0,79,2], -"class_rate_limiter_form_base.html":[0,0,80], -"class_rate_limiter_form_base.html#a093a5e3ae150250132c175a8570b4d76":[0,0,80,19], -"class_rate_limiter_form_base.html#a1ef5a9ffff3aa3bb3ca98288520facf1":[0,0,80,4], -"class_rate_limiter_form_base.html#a2070bac82fe8f04e0bc47bbac80e3bc9":[0,0,80,17], -"class_rate_limiter_form_base.html#a4782970d92f3d1172d9fef69bd7da828":[0,0,80,3], -"class_rate_limiter_form_base.html#a55be917c732dec21f8cb29809dff2203":[0,0,80,12], -"class_rate_limiter_form_base.html#a659b1c1ea9cc42e3aba7f22765db58c4":[0,0,80,6], -"class_rate_limiter_form_base.html#a68c7b3b7b47433c93bb157434857ceeb":[0,0,80,7], -"class_rate_limiter_form_base.html#a7006e306c3f3dedca709ce5903a2757d":[0,0,80,16], -"class_rate_limiter_form_base.html#a81af498ed88dc833c7c1d81a6902cbbc":[0,0,80,13], -"class_rate_limiter_form_base.html#a8794f8fbf98804519f8c817ddf24dd68":[0,0,80,8], -"class_rate_limiter_form_base.html#a8b490cb503cff3eeb134d048fb8cda49":[0,0,80,0], -"class_rate_limiter_form_base.html#a8e1cad8c05a5dfd8f2e8ad5033550eec":[0,0,80,2], -"class_rate_limiter_form_base.html#a9286ba86011958dcf76efca12f3b525b":[0,0,80,5], -"class_rate_limiter_form_base.html#a92bda3c20edddddda015624782954961":[0,0,80,18], -"class_rate_limiter_form_base.html#a97c7d55b3958ab59d17bae4490d501a9":[0,0,80,11], -"class_rate_limiter_form_base.html#ab706c56b5a717d1166e26fc21092c635":[0,0,80,1], -"class_rate_limiter_form_base.html#ab7aa4f1a2fa83e112aa35a4406d04f56":[0,0,80,10], -"class_rate_limiter_form_base.html#ad415e2f26fa0b27ddfb2fe463c14d061":[0,0,80,14], -"class_rate_limiter_form_base.html#ad67689b33322dea99d5e62ca2e5997d9":[0,0,80,9], -"class_rate_limiter_form_base.html#aeeaf9309158d7c4b3c3c4226f71bbed4":[0,0,80,15], -"class_reactive_shunt_element_form.html":[0,0,82], -"class_reactive_shunt_element_form.html#a02e49f07178cc0b7deed33c5fc0f84ae":[0,0,82,9], -"class_reactive_shunt_element_form.html#a31d1e4400f75b072aab7a387938940f5":[0,0,82,2], -"class_reactive_shunt_element_form.html#a32014c849a9abdc89f8d80665f7f3425":[0,0,82,0], -"class_reactive_shunt_element_form.html#a497e42c930f99b86fe56fae7bccea6a5":[0,0,82,1], -"class_reactive_shunt_element_form.html#a6480df895b328ef6a85e243277b80237":[0,0,82,3], -"class_reactive_shunt_element_form.html#a6aa812272efbc5a350e8ab9298af76cd":[0,0,82,4], -"class_reactive_shunt_element_form.html#a82d70a38623e99ad43cae70007e6013e":[0,0,82,7], -"class_reactive_shunt_element_form.html#ac96e00fc9edacae51525b0672f8fea4f":[0,0,82,6], -"class_reactive_shunt_element_form.html#ae348af4a562032c227eb407e700a2f23":[0,0,82,8], -"class_reactive_shunt_element_form.html#ae5509097e2960939553d420d0ec1a227":[0,0,82,5], -"class_reactive_shunt_element_form_base.html":[0,0,83], -"class_reactive_shunt_element_form_base.html#a090e59ee0d5d344b2867b3e7b79e8951":[0,0,83,21], -"class_reactive_shunt_element_form_base.html#a12aba656b33ee48307824e4229f75541":[0,0,83,19], -"class_reactive_shunt_element_form_base.html#a22cccd74ef0c2b8d251c336a88c9f407":[0,0,83,16], -"class_reactive_shunt_element_form_base.html#a2554b773c193f87e3ac85fc14d3e63c7":[0,0,83,20], -"class_reactive_shunt_element_form_base.html#a27c200b1beef702fec0e5d5a94165269":[0,0,83,23], -"class_reactive_shunt_element_form_base.html#a2ca7cece107e7d4057f5c9ee5b98c305":[0,0,83,22], -"class_reactive_shunt_element_form_base.html#a2e2c10853585884ad3a2802764b756c7":[0,0,83,17] +"class_rate_limiter.html#a1a4a1c1d6902a09996f3720c11657541":[0,0,78,0] }; diff --git a/docs/doxygen/html/navtreeindex9.js b/docs/doxygen/html/navtreeindex9.js index 5837634..b257cb3 100644 --- a/docs/doxygen/html/navtreeindex9.js +++ b/docs/doxygen/html/navtreeindex9.js @@ -1,5 +1,68 @@ var NAVTREEINDEX9 = { +"class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29":[0,0,78,12], +"class_rate_limiter.html#a30bbe6f431699d625ccfeb56c344a8a7":[0,0,78,1], +"class_rate_limiter.html#a3eb4d933b1d069808617306c78835f3e":[0,0,78,8], +"class_rate_limiter.html#a4f1152238b97fcf76a0bee258e971823":[0,0,78,4], +"class_rate_limiter.html#a4fad133132702b282606ba3c11957c4e":[0,0,78,6], +"class_rate_limiter.html#a6a7584c54dec6b657fe82c86ba4050c7":[0,0,78,5], +"class_rate_limiter.html#a6afc319e3a165776b8a429b9bbe38580":[0,0,78,3], +"class_rate_limiter.html#a7c1ce7440e82613b455054dd8447f147":[0,0,78,7], +"class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60":[0,0,78,11], +"class_rate_limiter.html#a9b33e6e0ff31d47e5a71ad667c394b3f":[0,0,78,10], +"class_rate_limiter.html#aab8ebea2ddf2925636d57f15c29a6f9f":[0,0,78,13], +"class_rate_limiter.html#ac9e938191a9cb73f2062424bb7ef3d6a":[0,0,78,9], +"class_rate_limiter.html#addf0eef395781b8584063a9061be59dc":[0,0,78,2], +"class_rate_limiter.html#af0f5379bd223db43561e02fc554af404":[0,0,78,14], +"class_rate_limiter.html#af879e6593015575abe9dc1751eee89a4":[0,0,78,15], +"class_rate_limiter_form.html":[0,0,79], +"class_rate_limiter_form.html#a113482f91d98929e9a886724943c54b5":[0,0,79,0], +"class_rate_limiter_form.html#a2890a4b61d498bd524a714de43b3e399":[0,0,79,4], +"class_rate_limiter_form.html#a32b0a27d6ec94f94f8f8c1e40c270877":[0,0,79,6], +"class_rate_limiter_form.html#aa64d34ca1a0d1ead7d63e7cefa9d1cf3":[0,0,79,1], +"class_rate_limiter_form.html#ace1a05e0ae6160a69a2a9faa6b7a3dc3":[0,0,79,3], +"class_rate_limiter_form.html#af19d40740af9ebb547036423ac091b28":[0,0,79,5], +"class_rate_limiter_form.html#af80f6d8f785e66546b3be7e514655e25":[0,0,79,2], +"class_rate_limiter_form_base.html":[0,0,80], +"class_rate_limiter_form_base.html#a093a5e3ae150250132c175a8570b4d76":[0,0,80,19], +"class_rate_limiter_form_base.html#a1ef5a9ffff3aa3bb3ca98288520facf1":[0,0,80,4], +"class_rate_limiter_form_base.html#a2070bac82fe8f04e0bc47bbac80e3bc9":[0,0,80,17], +"class_rate_limiter_form_base.html#a4782970d92f3d1172d9fef69bd7da828":[0,0,80,3], +"class_rate_limiter_form_base.html#a55be917c732dec21f8cb29809dff2203":[0,0,80,12], +"class_rate_limiter_form_base.html#a659b1c1ea9cc42e3aba7f22765db58c4":[0,0,80,6], +"class_rate_limiter_form_base.html#a68c7b3b7b47433c93bb157434857ceeb":[0,0,80,7], +"class_rate_limiter_form_base.html#a7006e306c3f3dedca709ce5903a2757d":[0,0,80,16], +"class_rate_limiter_form_base.html#a81af498ed88dc833c7c1d81a6902cbbc":[0,0,80,13], +"class_rate_limiter_form_base.html#a8794f8fbf98804519f8c817ddf24dd68":[0,0,80,8], +"class_rate_limiter_form_base.html#a8b490cb503cff3eeb134d048fb8cda49":[0,0,80,0], +"class_rate_limiter_form_base.html#a8e1cad8c05a5dfd8f2e8ad5033550eec":[0,0,80,2], +"class_rate_limiter_form_base.html#a9286ba86011958dcf76efca12f3b525b":[0,0,80,5], +"class_rate_limiter_form_base.html#a92bda3c20edddddda015624782954961":[0,0,80,18], +"class_rate_limiter_form_base.html#a97c7d55b3958ab59d17bae4490d501a9":[0,0,80,11], +"class_rate_limiter_form_base.html#ab706c56b5a717d1166e26fc21092c635":[0,0,80,1], +"class_rate_limiter_form_base.html#ab7aa4f1a2fa83e112aa35a4406d04f56":[0,0,80,10], +"class_rate_limiter_form_base.html#ad415e2f26fa0b27ddfb2fe463c14d061":[0,0,80,14], +"class_rate_limiter_form_base.html#ad67689b33322dea99d5e62ca2e5997d9":[0,0,80,9], +"class_rate_limiter_form_base.html#aeeaf9309158d7c4b3c3c4226f71bbed4":[0,0,80,15], +"class_reactive_shunt_element_form.html":[0,0,82], +"class_reactive_shunt_element_form.html#a02e49f07178cc0b7deed33c5fc0f84ae":[0,0,82,9], +"class_reactive_shunt_element_form.html#a31d1e4400f75b072aab7a387938940f5":[0,0,82,2], +"class_reactive_shunt_element_form.html#a32014c849a9abdc89f8d80665f7f3425":[0,0,82,0], +"class_reactive_shunt_element_form.html#a497e42c930f99b86fe56fae7bccea6a5":[0,0,82,1], +"class_reactive_shunt_element_form.html#a6480df895b328ef6a85e243277b80237":[0,0,82,3], +"class_reactive_shunt_element_form.html#a6aa812272efbc5a350e8ab9298af76cd":[0,0,82,4], +"class_reactive_shunt_element_form.html#a82d70a38623e99ad43cae70007e6013e":[0,0,82,7], +"class_reactive_shunt_element_form.html#ac96e00fc9edacae51525b0672f8fea4f":[0,0,82,6], +"class_reactive_shunt_element_form.html#ae348af4a562032c227eb407e700a2f23":[0,0,82,8], +"class_reactive_shunt_element_form.html#ae5509097e2960939553d420d0ec1a227":[0,0,82,5], +"class_reactive_shunt_element_form_base.html":[0,0,83], +"class_reactive_shunt_element_form_base.html#a090e59ee0d5d344b2867b3e7b79e8951":[0,0,83,21], +"class_reactive_shunt_element_form_base.html#a12aba656b33ee48307824e4229f75541":[0,0,83,19], +"class_reactive_shunt_element_form_base.html#a22cccd74ef0c2b8d251c336a88c9f407":[0,0,83,16], +"class_reactive_shunt_element_form_base.html#a2554b773c193f87e3ac85fc14d3e63c7":[0,0,83,20], +"class_reactive_shunt_element_form_base.html#a27c200b1beef702fec0e5d5a94165269":[0,0,83,23], +"class_reactive_shunt_element_form_base.html#a2ca7cece107e7d4057f5c9ee5b98c305":[0,0,83,22], +"class_reactive_shunt_element_form_base.html#a2e2c10853585884ad3a2802764b756c7":[0,0,83,17], "class_reactive_shunt_element_form_base.html#a2eabee46e0b04d92086a0d0f21e3b10e":[0,0,83,12], "class_reactive_shunt_element_form_base.html#a3295f1d61c6249cb5ec8994a86b66d41":[0,0,83,6], "class_reactive_shunt_element_form_base.html#a39f95da41f55cae7829b9bd777dfef4d":[0,0,83,2], @@ -186,68 +249,5 @@ var NAVTREEINDEX9 = "class_switching_form_base.html":[0,0,93], "class_switching_form_base.html#a02a15eaf6d2e1533369d7c4985799839":[0,0,93,29], "class_switching_form_base.html#a0ae557b49458c10705867c2fe88cdb24":[0,0,93,20], -"class_switching_form_base.html#a1181e4a27deea52b62aa6abd5cf06f98":[0,0,93,15], -"class_switching_form_base.html#a12a2da9f3c7ed16f5e9965c13d166f96":[0,0,93,3], -"class_switching_form_base.html#a2816bcf1b23f2e79b0b58a0a8de0ba24":[0,0,93,16], -"class_switching_form_base.html#a2c79761f5c68a966661865a91e0a4c32":[0,0,93,25], -"class_switching_form_base.html#a2f55dcdb9ba37f9c4e1428f6767b168e":[0,0,93,2], -"class_switching_form_base.html#a4120a54ec6ba678f97f6f23b27453f6c":[0,0,93,6], -"class_switching_form_base.html#a461522bb3739dd790b968c9536239d3d":[0,0,93,22], -"class_switching_form_base.html#a53be89419785168b8a74cbbc4baf4da5":[0,0,93,17], -"class_switching_form_base.html#a5682b2c0825b46e0eb3ac8990b1b5c7a":[0,0,93,21], -"class_switching_form_base.html#a67f95f0d053dd46cdacb20848c0d9c84":[0,0,93,12], -"class_switching_form_base.html#a7672f7fad7fd63de788006d8c67668d3":[0,0,93,10], -"class_switching_form_base.html#a7d645a4f981511ba46e549c89a624533":[0,0,93,18], -"class_switching_form_base.html#a84b3ee2c021abbe31d8c42c995a89d56":[0,0,93,1], -"class_switching_form_base.html#a86f434b7cd754bf15e415d394f5101a8":[0,0,93,23], -"class_switching_form_base.html#a92d178826ef95170e623bb4ad7d33171":[0,0,93,0], -"class_switching_form_base.html#aab2b0440e8a1af4a2c16ae3d88c4713a":[0,0,93,24], -"class_switching_form_base.html#ab606b039351e82f6b5115336d0edafd5":[0,0,93,9], -"class_switching_form_base.html#ab8d540ac6bae77e44f30b8ffce030e07":[0,0,93,19], -"class_switching_form_base.html#ac1bb1bf80e6526bfd97e54277ef8da3c":[0,0,93,5], -"class_switching_form_base.html#ac3ca747257bb9ca0fa1ce1c09a6e5342":[0,0,93,8], -"class_switching_form_base.html#ac839296c57c6c380547180c3c7180f5c":[0,0,93,30], -"class_switching_form_base.html#acc549ba43edb9d7ba4ca938982fd794b":[0,0,93,7], -"class_switching_form_base.html#ad0c13eb28aee4127889405283bb72904":[0,0,93,28], -"class_switching_form_base.html#ad17112f4d131937423f551720066177a":[0,0,93,26], -"class_switching_form_base.html#ad21d7949427c973081f7461620506335":[0,0,93,13], -"class_switching_form_base.html#adfc965bcb8575b5b0d36e7ad311d2d0b":[0,0,93,27], -"class_switching_form_base.html#ae113c3c97e21037e6561811a094436a0":[0,0,93,14], -"class_switching_form_base.html#ae6854ecd50f251c6c5907dfa6945fdc3":[0,0,93,4], -"class_switching_form_base.html#afd2e5b45c5a295b58a255ba0159ad8d4":[0,0,93,11], -"class_sync_generator.html":[0,0,94], -"class_sync_generator.html#a05fbc44f44fb207083a7550e421f8bb4":[0,0,94,10], -"class_sync_generator.html#a23d63853faf0a4ee4aa1301cb234c603":[0,0,94,15], -"class_sync_generator.html#a24b9894fa42473dfb8bcf82221401a97":[0,0,94,4], -"class_sync_generator.html#a45ad59011c69a3b08c35ca16af6a5de6":[0,0,94,14], -"class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec":[0,0,94,13], -"class_sync_generator.html#a54c742a72e8d9d7da2990b1a455b899a":[0,0,94,8], -"class_sync_generator.html#a57b0e5d734736aa15d7a0ae59c21f5cc":[0,0,94,3], -"class_sync_generator.html#a6cbf05435af171775cbaf81d8beb6474":[0,0,94,2], -"class_sync_generator.html#a710965e1539d2199096bc5e71116de8a":[0,0,94,11], -"class_sync_generator.html#a7f825dd5949d3bf5b49e4e4b788b9de3":[0,0,94,1], -"class_sync_generator.html#a87b438b8b95a119ac298a49fd4248272":[0,0,94,6], -"class_sync_generator.html#a9130e8714c1518683540f587aca1201f":[0,0,94,5], -"class_sync_generator.html#a9454438d059269c194e1aa648e122f7e":[0,0,94,9], -"class_sync_generator.html#aaa4c5978dc6d344747d74e36fb3e71d8":[0,0,94,12], -"class_sync_generator.html#af66e02540c23285395e3592d1c822f99":[0,0,94,0], -"class_sync_generator.html#afcb0a1c03dab5ede586e5d15231f2cab":[0,0,94,7], -"class_sync_machine_form.html":[0,0,96], -"class_sync_machine_form.html#a1a4fc8f4ae070df13b73c7b400e0dc43":[0,0,96,3], -"class_sync_machine_form.html#a3bc93d1fd6285fcd5e11a4c18541914e":[0,0,96,9], -"class_sync_machine_form.html#a53fd325bac54a9509ea530926bd50825":[0,0,96,0], -"class_sync_machine_form.html#a61b60bfc52876775f74160ae9075c697":[0,0,96,12], -"class_sync_machine_form.html#a9421e44f0914790e23bcecaa222eaecc":[0,0,96,2], -"class_sync_machine_form.html#a9c53acf928dd35b648d0a67b69fa8b46":[0,0,96,6], -"class_sync_machine_form.html#a9fea7ef16899f918e5cedad577f960e7":[0,0,96,1], -"class_sync_machine_form.html#aa6bf6f86e79a0329f876996b651d3c72":[0,0,96,7], -"class_sync_machine_form.html#ac21b7bb1c3261b3ff128d9339a5bef51":[0,0,96,11], -"class_sync_machine_form.html#ac4699ffcdb2c8f09e8610cb1afd50e05":[0,0,96,8], -"class_sync_machine_form.html#ad7899edef11e6c72782eeef5aecfec54":[0,0,96,10], -"class_sync_machine_form.html#aea6339fd7121c438af87d8515490ab06":[0,0,96,5], -"class_sync_machine_form.html#aed6770180b4f2efb07c8df061e2fbd03":[0,0,96,4], -"class_sync_machine_form_base.html":[0,0,97], -"class_sync_machine_form_base.html#a0045396673e3acd9fb6a21982b7d7596":[0,0,97,22], -"class_sync_machine_form_base.html#a0063a2e8df81e75b32e0fac571c921ae":[0,0,97,34], -"class_sync_machine_form_base.html#a05439a30d63c78be06d1d046c0cc59d8":[0,0,97,87] +"class_switching_form_base.html#a1181e4a27deea52b62aa6abd5cf06f98":[0,0,93,15] }; diff --git a/docs/doxygen/html/search/all_1.js b/docs/doxygen/html/search/all_1.js index 45fc30c..d2cbbec 100644 --- a/docs/doxygen/html/search/all_1.js +++ b/docs/doxygen/html/search/all_1.js @@ -2,7 +2,9 @@ var searchData= [ ['bind',['bind',['../classwx_g_l_string.html#ab31442170832123f5a0afa2b15fb024a',1,'wxGLString::bind()'],['../classwx_g_l_string_array.html#a692adb887740de68eaf6ca5f2e16e1f6',1,'wxGLStringArray::bind()']]], ['branch',['Branch',['../class_branch.html',1,'']]], + ['branch_2eh',['Branch.h',['../_branch_8h.html',1,'']]], ['bus',['Bus',['../class_bus.html',1,'']]], + ['bus_2eh',['Bus.h',['../_bus_8h.html',1,'']]], ['buselectricaldata',['BusElectricalData',['../struct_bus_electrical_data.html',1,'']]], ['busform',['BusForm',['../class_bus_form.html',1,'']]], ['busform_2eh',['BusForm.h',['../_bus_form_8h.html',1,'']]], diff --git a/docs/doxygen/html/search/all_10.js b/docs/doxygen/html/search/all_10.js index 77f9de3..3ab5cad 100644 --- a/docs/doxygen/html/search/all_10.js +++ b/docs/doxygen/html/search/all_10.js @@ -1,16 +1,19 @@ var searchData= [ ['text',['Text',['../class_text.html',1,'']]], + ['text_2eh',['Text.h',['../_text_8h.html',1,'']]], ['textform',['TextForm',['../class_text_form.html',1,'']]], ['textform_2eh',['TextForm.h',['../_text_form_8h.html',1,'']]], ['textformbase',['TextFormBase',['../class_text_form_base.html',1,'']]], ['textgldrawable',['TextGLDrawable',['../class_text_g_l_drawable.html',1,'']]], ['texttexture',['TextTexture',['../class_text_texture.html',1,'']]], ['transferfunction',['TransferFunction',['../class_transfer_function.html',1,'']]], + ['transferfunction_2eh',['TransferFunction.h',['../_transfer_function_8h.html',1,'']]], ['transferfunctionform',['TransferFunctionForm',['../class_transfer_function_form.html',1,'']]], ['transferfunctionform_2eh',['TransferFunctionForm.h',['../_transfer_function_form_8h.html',1,'']]], ['transferfunctionformbase',['TransferFunctionFormBase',['../class_transfer_function_form_base.html',1,'']]], ['transformer',['Transformer',['../class_transformer.html',1,'']]], + ['transformer_2eh',['Transformer.h',['../_transformer_8h.html',1,'']]], ['transformerelectricaldata',['TransformerElectricalData',['../struct_transformer_electrical_data.html',1,'']]], ['transformerform',['TransformerForm',['../class_transformer_form.html',1,'']]], ['transformerform_2eh',['TransformerForm.h',['../_transformer_form_8h.html',1,'']]], diff --git a/docs/doxygen/html/search/all_2.js b/docs/doxygen/html/search/all_2.js index 81e2eeb..cf70fac 100644 --- a/docs/doxygen/html/search/all_2.js +++ b/docs/doxygen/html/search/all_2.js @@ -3,9 +3,11 @@ var searchData= ['c',['c',['../struct_integration_constant.html#afc3598097377951b84492d087a06b455',1,'IntegrationConstant']]], ['calculateboundaries',['CalculateBoundaries',['../class_element.html#a57f5771fd003020fef3866a1d1dc7487',1,'Element::CalculateBoundaries()'],['../class_line.html#aa146d6b0c7f3b74204f2c88dcbd7f4b0',1,'Line::CalculateBoundaries()']]], ['calculatepowerflowpts',['CalculatePowerFlowPts',['../class_power_element.html#a6c656ef223d36e96b19b0a9ec2115e9e',1,'PowerElement']]], + ['calculatespacestate',['CalculateSpaceState',['../class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a',1,'TransferFunction']]], ['camera',['Camera',['../class_camera.html',1,'']]], ['camera_2eh',['Camera.h',['../_camera_8h.html',1,'']]], ['capacitor',['Capacitor',['../class_capacitor.html',1,'']]], + ['capacitor_2eh',['Capacitor.h',['../_capacitor_8h.html',1,'']]], ['capacitorelectricaldata',['CapacitorElectricalData',['../struct_capacitor_electrical_data.html',1,'']]], ['chartview',['ChartView',['../class_chart_view.html',1,'']]], ['chartview_2eh',['ChartView.h',['../_chart_view_8h.html',1,'']]], diff --git a/docs/doxygen/html/search/all_4.js b/docs/doxygen/html/search/all_4.js index 4e9ef48..2d4913d 100644 --- a/docs/doxygen/html/search/all_4.js +++ b/docs/doxygen/html/search/all_4.js @@ -9,7 +9,9 @@ var searchData= ['element',['Element',['../class_element.html',1,'Element'],['../class_element.html#ab0d0e20be9a36ae676202db753faeec9',1,'Element::Element()']]], ['element_2eh',['Element.h',['../_element_8h.html',1,'']]], ['elementdataobject',['ElementDataObject',['../class_element_data_object.html',1,'']]], + ['elementdataobject_2eh',['ElementDataObject.h',['../_element_data_object_8h.html',1,'']]], ['elementplotdata',['ElementPlotData',['../class_element_plot_data.html',1,'']]], + ['elementplotdata_2eh',['ElementPlotData.h',['../_element_plot_data_8h.html',1,'']]], ['elementslists',['ElementsLists',['../struct_elements_lists.html',1,'']]], ['eq',['eq',['../struct_sync_machine_model_data.html#a810b9e3250ebb8f3d4176f6e5a2b1076',1,'SyncMachineModelData']]], ['exponential',['Exponential',['../class_exponential.html',1,'']]], diff --git a/docs/doxygen/html/search/all_6.js b/docs/doxygen/html/search/all_6.js index 623714a..5b21bea 100644 --- a/docs/doxygen/html/search/all_6.js +++ b/docs/doxygen/html/search/all_6.js @@ -45,5 +45,6 @@ var searchData= ['gettransformerlist',['GetTransformerList',['../class_electric_calculation.html#a3b89149e5fb56253c0629c9d260b3b7e',1,'ElectricCalculation']]], ['getwidth',['GetWidth',['../class_element.html#a23e1fe2745c70cfb43725f608c4bce00',1,'Element::GetWidth()'],['../class_text_g_l_drawable.html#a965ac9bf245f1979a080193986874f18',1,'TextGLDrawable::getWidth()']]], ['getybus',['GetYBus',['../class_electric_calculation.html#a939e6e75b5e0cb555a82b2f9ef59c59d',1,'ElectricCalculation']]], - ['graphicalelement',['GraphicalElement',['../class_graphical_element.html',1,'']]] + ['graphicalelement',['GraphicalElement',['../class_graphical_element.html',1,'']]], + ['graphicalelement_2eh',['GraphicalElement.h',['../_graphical_element_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/all_8.js b/docs/doxygen/html/search/all_8.js index 5f9cb01..1fd429c 100644 --- a/docs/doxygen/html/search/all_8.js +++ b/docs/doxygen/html/search/all_8.js @@ -14,11 +14,13 @@ var searchData= ['id_5frotate_5fclock',['ID_ROTATE_CLOCK',['../_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049a9d58b2fe374676b88029d401da0d77a8',1,'Element.h']]], ['id_5frotate_5fcounterclock',['ID_ROTATE_COUNTERCLOCK',['../_element_8h.html#a0a9284bee7d4ad748c4a740fdeb3f049adeee9ba1a6f37ff0622ca94a52e40551',1,'Element.h']]], ['indmotor',['IndMotor',['../class_ind_motor.html',1,'']]], + ['indmotor_2eh',['IndMotor.h',['../_ind_motor_8h.html',1,'']]], ['indmotorelectricaldata',['IndMotorElectricalData',['../struct_ind_motor_electrical_data.html',1,'']]], ['indmotorform',['IndMotorForm',['../class_ind_motor_form.html',1,'']]], ['indmotorform_2eh',['IndMotorForm.h',['../_ind_motor_form_8h.html',1,'']]], ['indmotorformbase',['IndMotorFormBase',['../class_ind_motor_form_base.html',1,'']]], ['inductor',['Inductor',['../class_inductor.html',1,'']]], + ['inductor_2eh',['Inductor.h',['../_inductor_8h.html',1,'']]], ['inductorelectricaldata',['InductorElectricalData',['../struct_inductor_electrical_data.html',1,'']]], ['integrationconstant',['IntegrationConstant',['../struct_integration_constant.html',1,'']]], ['intersects',['Intersects',['../class_branch.html#aa23b1014c947e46996f1c0c4caa187e1',1,'Branch::Intersects()'],['../class_bus.html#a5014be68f4bb5d8f1a1ea861b03bacdf',1,'Bus::Intersects()'],['../class_capacitor.html#a6b06adb1ef3545b220e0b94ee6210b7a',1,'Capacitor::Intersects()'],['../class_connection_line.html#aaa3e63c2e48338e324ee7b58911c86b6',1,'ConnectionLine::Intersects()'],['../class_constant.html#ac2e2c958b3d38ed381d59cbb361974b2',1,'Constant::Intersects()'],['../class_element.html#a038dfd8452fe48ab04bc4e47820c148e',1,'Element::Intersects()'],['../class_exponential.html#a540b1a43045b9bb7c96d32825d15c95e',1,'Exponential::Intersects()'],['../class_gain.html#a8768490f9cb20a6a8c9148d1c893e980',1,'Gain::Intersects()'],['../class_inductor.html#a3d331d2a725275a12489401180d4c1d1',1,'Inductor::Intersects()'],['../class_i_o_control.html#adebd59a32fd699ba4dff4dff44dfbf90',1,'IOControl::Intersects()'],['../class_limiter.html#ac9c1858dfc3b4d30b2eca0c4767a9f0e',1,'Limiter::Intersects()'],['../class_line.html#a125581fc6d21c83565b902751af331dc',1,'Line::Intersects()'],['../class_machines.html#a0a825ccdbd5059f9ae9f869d4b6e3ec4',1,'Machines::Intersects()'],['../class_multiplier.html#aba53ef763812fbff891cdf0b89c7fcca',1,'Multiplier::Intersects()'],['../class_rate_limiter.html#a7c1ce7440e82613b455054dd8447f147',1,'RateLimiter::Intersects()'],['../class_shunt.html#afdbf0c51f9630589937298329bb041fe',1,'Shunt::Intersects()'],['../class_sum.html#ac8ed3db993dd3053b94ccac7da4a664e',1,'Sum::Intersects()'],['../class_text.html#a9923c820cd77b411257ba48beceafeaa',1,'Text::Intersects()'],['../class_transfer_function.html#a6325dec72c7b85178f490c5cf85229bd',1,'TransferFunction::Intersects()'],['../class_transformer.html#a39b58fcf230970601c5d77c088559731',1,'Transformer::Intersects()']]], diff --git a/docs/doxygen/html/search/all_9.js b/docs/doxygen/html/search/all_9.js index e8f799e..c9479fa 100644 --- a/docs/doxygen/html/search/all_9.js +++ b/docs/doxygen/html/search/all_9.js @@ -6,11 +6,13 @@ var searchData= ['limiterform_2eh',['LimiterForm.h',['../_limiter_form_8h.html',1,'']]], ['limiterformbase',['LimiterFormBase',['../class_limiter_form_base.html',1,'']]], ['line',['Line',['../class_line.html',1,'']]], + ['line_2eh',['Line.h',['../_line_8h.html',1,'']]], ['lineelectricaldata',['LineElectricalData',['../struct_line_electrical_data.html',1,'']]], ['lineform',['LineForm',['../class_line_form.html',1,'']]], ['lineform_2eh',['LineForm.h',['../_line_form_8h.html',1,'']]], ['lineformbase',['LineFormBase',['../class_line_form_base.html',1,'']]], ['load',['Load',['../class_load.html',1,'']]], + ['load_2eh',['Load.h',['../_load_8h.html',1,'']]], ['loadelectricaldata',['LoadElectricalData',['../struct_load_electrical_data.html',1,'']]], ['loadform',['LoadForm',['../class_load_form.html',1,'']]], ['loadform_2eh',['LoadForm.h',['../_load_form_8h.html',1,'']]], diff --git a/docs/doxygen/html/search/all_a.js b/docs/doxygen/html/search/all_a.js index 8f1137c..fb50828 100644 --- a/docs/doxygen/html/search/all_a.js +++ b/docs/doxygen/html/search/all_a.js @@ -2,6 +2,7 @@ var searchData= [ ['m',['m',['../struct_integration_constant.html#adafabd0d37a52d4ed054a800cbce3d65',1,'IntegrationConstant']]], ['machines',['Machines',['../class_machines.html',1,'']]], + ['machines_2eh',['Machines.h',['../_machines_8h.html',1,'']]], ['mainapp',['MainApp',['../class_main_app.html',1,'']]], ['mainframe',['MainFrame',['../class_main_frame.html',1,'MainFrame'],['../class_main_frame.html#a667b44053cae174a361cfd21124ef995',1,'MainFrame::MainFrame()'],['../class_main_frame.html#ac3288e93c5b8682863574bc47c9e9ff8',1,'MainFrame::MainFrame(wxWindow *parent, wxLocale *locale, PropertiesData *initProperties, wxString openPath="")']]], ['mainframe_2eh',['MainFrame.h',['../_main_frame_8h.html',1,'']]], diff --git a/docs/doxygen/html/search/all_d.js b/docs/doxygen/html/search/all_d.js index 275f43f..dfe18e8 100644 --- a/docs/doxygen/html/search/all_d.js +++ b/docs/doxygen/html/search/all_d.js @@ -13,6 +13,8 @@ var searchData= ['powerelement',['PowerElement',['../class_power_element.html',1,'PowerElement'],['../class_power_element.html#a382cdc0897802eb0a89692483fa7043e',1,'PowerElement::PowerElement()']]], ['powerelement_2eh',['PowerElement.h',['../_power_element_8h.html',1,'']]], ['powerflow',['PowerFlow',['../class_power_flow.html',1,'']]], + ['powerflow_2eh',['PowerFlow.h',['../_power_flow_8h.html',1,'']]], ['powerflowdirection',['PowerFlowDirection',['../_power_element_8h.html#a467d3005d31dde0ba0e52cf8e233e740',1,'PowerElement.h']]], - ['propertiesdata',['PropertiesData',['../class_properties_data.html',1,'']]] + ['propertiesdata',['PropertiesData',['../class_properties_data.html',1,'']]], + ['propertiesdata_2eh',['PropertiesData.h',['../_properties_data_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/all_f.js b/docs/doxygen/html/search/all_f.js index 0084ece..3ae9537 100644 --- a/docs/doxygen/html/search/all_f.js +++ b/docs/doxygen/html/search/all_f.js @@ -22,15 +22,17 @@ var searchData= ['showform',['ShowForm',['../class_bus.html#a93dbd8f80b11123395093f561d5241d0',1,'Bus::ShowForm()'],['../class_capacitor.html#a459b1bbdb153bb9720176661e2960ea6',1,'Capacitor::ShowForm()'],['../class_constant.html#af6bded0e01717303bb71da9e45c2b061',1,'Constant::ShowForm()'],['../class_element.html#ae1652eded3ccbd241a783691117418b2',1,'Element::ShowForm()'],['../class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d',1,'Exponential::ShowForm()'],['../class_gain.html#a6b98027cbf545302867ad75f7ab84b93',1,'Gain::ShowForm()'],['../class_ind_motor.html#add48c9a03d197a6279ca2e33af0fe286',1,'IndMotor::ShowForm()'],['../class_inductor.html#abfaf28fc70a71f3f85940eef7d1551c9',1,'Inductor::ShowForm()'],['../class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439',1,'IOControl::ShowForm()'],['../class_limiter.html#a31fd227e010e7d39f1435a70709b14e3',1,'Limiter::ShowForm()'],['../class_line.html#a24c6a659148f063c78e080a18f4517a1',1,'Line::ShowForm()'],['../class_load.html#a792367f35c97324328816fee156e5ecf',1,'Load::ShowForm()'],['../class_multiplier.html#a4fa1206b47c626930db753a70e01680d',1,'Multiplier::ShowForm()'],['../class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60',1,'RateLimiter::ShowForm()'],['../class_sum.html#a8c4bfb1dc965d8ac246de59d1f10888b',1,'Sum::ShowForm()'],['../class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec',1,'SyncGenerator::ShowForm()'],['../class_sync_motor.html#a3201b22e0271517f5ed3df85da6cee6f',1,'SyncMotor::ShowForm()'],['../class_transfer_function.html#afe15de93ab4f93032560a6139091ef10',1,'TransferFunction::ShowForm()'],['../class_transformer.html#acb55f182a7f6d7af0feb6a94cb62af4f',1,'Transformer::ShowForm()']]], ['showpickbox',['ShowPickbox',['../class_element.html#ab8bf35b4a205fa58772402cea7fad89c',1,'Element']]], ['shunt',['Shunt',['../class_shunt.html',1,'']]], + ['shunt_2eh',['Shunt.h',['../_shunt_8h.html',1,'']]], ['simulationdata',['SimulationData',['../struct_simulation_data.html',1,'']]], ['simulationssettingsform',['SimulationsSettingsForm',['../class_simulations_settings_form.html',1,'']]], ['simulationssettingsform_2eh',['SimulationsSettingsForm.h',['../_simulations_settings_form_8h.html',1,'']]], ['simulationssettingsformbase',['SimulationsSettingsFormBase',['../class_simulations_settings_form_base.html',1,'']]], - ['solve',['Solve',['../class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29',1,'RateLimiter']]], + ['solve',['Solve',['../class_exponential.html#ae8e635b32b5d6a8226a3654aa639094f',1,'Exponential::Solve()'],['../class_gain.html#a282cab6d339aa89a35c775bbea2aa117',1,'Gain::Solve()'],['../class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29',1,'RateLimiter::Solve()'],['../class_transfer_function.html#ab23ed101f7d4e953e4df0d4d480d9798',1,'TransferFunction::Solve()']]], ['spacestate',['SpaceState',['../struct_transfer_function_1_1_space_state.html',1,'TransferFunction']]], ['startmove',['StartMove',['../class_branch.html#a947cec45fcdc78d01eaabe19d23daf64',1,'Branch::StartMove()'],['../class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36',1,'ConnectionLine::StartMove()'],['../class_control_element.html#a61440a392d438de163bfe9ffb8e9efec',1,'ControlElement::StartMove()'],['../class_element.html#a846a2a51780a99363b4d4b1812ca16b4',1,'Element::StartMove()'],['../class_line.html#abb812387508a9971570bfa1d38e41041',1,'Line::StartMove()'],['../class_machines.html#acbefe76cd5161b5684a27205b155e797',1,'Machines::StartMove()'],['../class_shunt.html#a56d6136d647f64cf490dd9d7720f6865',1,'Shunt::StartMove()'],['../class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5',1,'Transformer::StartMove()']]], ['stringfromdouble',['StringFromDouble',['../class_element.html#abb2e253ec1e86353cd7160209c96553c',1,'Element']]], ['sum',['Sum',['../class_sum.html',1,'']]], + ['sum_2eh',['Sum.h',['../_sum_8h.html',1,'']]], ['sumform',['SumForm',['../class_sum_form.html',1,'']]], ['sumform_2eh',['SumForm.h',['../_sum_form_8h.html',1,'']]], ['sumformbase',['SumFormBase',['../class_sum_form_base.html',1,'']]], @@ -45,11 +47,13 @@ var searchData= ['swtime',['swTime',['../struct_switching_data.html#a3323745bf0a3f6461fbc19bc76a189df',1,'SwitchingData']]], ['swtype',['swType',['../struct_switching_data.html#af78fb958137a0532ea2a584810708574',1,'SwitchingData']]], ['syncgenerator',['SyncGenerator',['../class_sync_generator.html',1,'']]], + ['syncgenerator_2eh',['SyncGenerator.h',['../_sync_generator_8h.html',1,'']]], ['syncgeneratorelectricaldata',['SyncGeneratorElectricalData',['../struct_sync_generator_electrical_data.html',1,'']]], ['syncmachineform',['SyncMachineForm',['../class_sync_machine_form.html',1,'']]], ['syncmachineform_2eh',['SyncMachineForm.h',['../_sync_machine_form_8h.html',1,'']]], ['syncmachineformbase',['SyncMachineFormBase',['../class_sync_machine_form_base.html',1,'']]], ['syncmachinemodeldata',['SyncMachineModelData',['../struct_sync_machine_model_data.html',1,'']]], ['syncmotor',['SyncMotor',['../class_sync_motor.html',1,'']]], + ['syncmotor_2eh',['SyncMotor.h',['../_sync_motor_8h.html',1,'']]], ['syncmotorelectricaldata',['SyncMotorElectricalData',['../struct_sync_motor_electrical_data.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/files_1.js b/docs/doxygen/html/search/files_1.js index b0afef0..a524e56 100644 --- a/docs/doxygen/html/search/files_1.js +++ b/docs/doxygen/html/search/files_1.js @@ -1,4 +1,6 @@ var searchData= [ + ['branch_2eh',['Branch.h',['../_branch_8h.html',1,'']]], + ['bus_2eh',['Bus.h',['../_bus_8h.html',1,'']]], ['busform_2eh',['BusForm.h',['../_bus_form_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/files_2.js b/docs/doxygen/html/search/files_2.js index 2779e61..fba6095 100644 --- a/docs/doxygen/html/search/files_2.js +++ b/docs/doxygen/html/search/files_2.js @@ -1,6 +1,7 @@ var searchData= [ ['camera_2eh',['Camera.h',['../_camera_8h.html',1,'']]], + ['capacitor_2eh',['Capacitor.h',['../_capacitor_8h.html',1,'']]], ['chartview_2eh',['ChartView.h',['../_chart_view_8h.html',1,'']]], ['connectionline_2eh',['ConnectionLine.h',['../_connection_line_8h.html',1,'']]], ['constant_2eh',['Constant.h',['../_constant_8h.html',1,'']]], diff --git a/docs/doxygen/html/search/files_4.js b/docs/doxygen/html/search/files_4.js index fddb2d9..2818aa2 100644 --- a/docs/doxygen/html/search/files_4.js +++ b/docs/doxygen/html/search/files_4.js @@ -3,6 +3,8 @@ var searchData= ['electriccalculation_2eh',['ElectricCalculation.h',['../_electric_calculation_8h.html',1,'']]], ['electromechanical_2eh',['Electromechanical.h',['../_electromechanical_8h.html',1,'']]], ['element_2eh',['Element.h',['../_element_8h.html',1,'']]], + ['elementdataobject_2eh',['ElementDataObject.h',['../_element_data_object_8h.html',1,'']]], + ['elementplotdata_2eh',['ElementPlotData.h',['../_element_plot_data_8h.html',1,'']]], ['exponential_2eh',['Exponential.h',['../_exponential_8h.html',1,'']]], ['exponentialform_2eh',['ExponentialForm.h',['../_exponential_form_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/files_6.js b/docs/doxygen/html/search/files_6.js index ca1c931..a12ca9d 100644 --- a/docs/doxygen/html/search/files_6.js +++ b/docs/doxygen/html/search/files_6.js @@ -3,5 +3,6 @@ var searchData= ['gain_2eh',['Gain.h',['../_gain_8h.html',1,'']]], ['gainform_2eh',['GainForm.h',['../_gain_form_8h.html',1,'']]], ['generalpropertiesform_2eh',['GeneralPropertiesForm.h',['../_general_properties_form_8h.html',1,'']]], - ['generatorstabform_2eh',['GeneratorStabForm.h',['../_generator_stab_form_8h.html',1,'']]] + ['generatorstabform_2eh',['GeneratorStabForm.h',['../_generator_stab_form_8h.html',1,'']]], + ['graphicalelement_2eh',['GraphicalElement.h',['../_graphical_element_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/files_7.js b/docs/doxygen/html/search/files_7.js index dd12521..9815ce2 100644 --- a/docs/doxygen/html/search/files_7.js +++ b/docs/doxygen/html/search/files_7.js @@ -1,6 +1,8 @@ var searchData= [ + ['indmotor_2eh',['IndMotor.h',['../_ind_motor_8h.html',1,'']]], ['indmotorform_2eh',['IndMotorForm.h',['../_ind_motor_form_8h.html',1,'']]], + ['inductor_2eh',['Inductor.h',['../_inductor_8h.html',1,'']]], ['iocontrol_2eh',['IOControl.h',['../_i_o_control_8h.html',1,'']]], ['iocontrolform_2eh',['IOControlForm.h',['../_i_o_control_form_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/files_8.js b/docs/doxygen/html/search/files_8.js index 24534c5..fe2246d 100644 --- a/docs/doxygen/html/search/files_8.js +++ b/docs/doxygen/html/search/files_8.js @@ -2,6 +2,8 @@ var searchData= [ ['limiter_2eh',['Limiter.h',['../_limiter_8h.html',1,'']]], ['limiterform_2eh',['LimiterForm.h',['../_limiter_form_8h.html',1,'']]], + ['line_2eh',['Line.h',['../_line_8h.html',1,'']]], ['lineform_2eh',['LineForm.h',['../_line_form_8h.html',1,'']]], + ['load_2eh',['Load.h',['../_load_8h.html',1,'']]], ['loadform_2eh',['LoadForm.h',['../_load_form_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/files_9.js b/docs/doxygen/html/search/files_9.js index 4722604..538f1aa 100644 --- a/docs/doxygen/html/search/files_9.js +++ b/docs/doxygen/html/search/files_9.js @@ -1,5 +1,6 @@ var searchData= [ + ['machines_2eh',['Machines.h',['../_machines_8h.html',1,'']]], ['mainframe_2eh',['MainFrame.h',['../_main_frame_8h.html',1,'']]], ['multiplier_2eh',['Multiplier.h',['../_multiplier_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/files_a.js b/docs/doxygen/html/search/files_a.js index 00a21bf..089ad9a 100644 --- a/docs/doxygen/html/search/files_a.js +++ b/docs/doxygen/html/search/files_a.js @@ -1,4 +1,6 @@ var searchData= [ - ['powerelement_2eh',['PowerElement.h',['../_power_element_8h.html',1,'']]] + ['powerelement_2eh',['PowerElement.h',['../_power_element_8h.html',1,'']]], + ['powerflow_2eh',['PowerFlow.h',['../_power_flow_8h.html',1,'']]], + ['propertiesdata_2eh',['PropertiesData.h',['../_properties_data_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/files_c.js b/docs/doxygen/html/search/files_c.js index a248cb1..5f51894 100644 --- a/docs/doxygen/html/search/files_c.js +++ b/docs/doxygen/html/search/files_c.js @@ -1,7 +1,11 @@ var searchData= [ + ['shunt_2eh',['Shunt.h',['../_shunt_8h.html',1,'']]], ['simulationssettingsform_2eh',['SimulationsSettingsForm.h',['../_simulations_settings_form_8h.html',1,'']]], + ['sum_2eh',['Sum.h',['../_sum_8h.html',1,'']]], ['sumform_2eh',['SumForm.h',['../_sum_form_8h.html',1,'']]], ['switchingform_2eh',['SwitchingForm.h',['../_switching_form_8h.html',1,'']]], - ['syncmachineform_2eh',['SyncMachineForm.h',['../_sync_machine_form_8h.html',1,'']]] + ['syncgenerator_2eh',['SyncGenerator.h',['../_sync_generator_8h.html',1,'']]], + ['syncmachineform_2eh',['SyncMachineForm.h',['../_sync_machine_form_8h.html',1,'']]], + ['syncmotor_2eh',['SyncMotor.h',['../_sync_motor_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/files_d.js b/docs/doxygen/html/search/files_d.js index 6324938..0168322 100644 --- a/docs/doxygen/html/search/files_d.js +++ b/docs/doxygen/html/search/files_d.js @@ -1,6 +1,9 @@ var searchData= [ + ['text_2eh',['Text.h',['../_text_8h.html',1,'']]], ['textform_2eh',['TextForm.h',['../_text_form_8h.html',1,'']]], + ['transferfunction_2eh',['TransferFunction.h',['../_transfer_function_8h.html',1,'']]], ['transferfunctionform_2eh',['TransferFunctionForm.h',['../_transfer_function_form_8h.html',1,'']]], + ['transformer_2eh',['Transformer.h',['../_transformer_8h.html',1,'']]], ['transformerform_2eh',['TransformerForm.h',['../_transformer_form_8h.html',1,'']]] ]; diff --git a/docs/doxygen/html/search/functions_2.js b/docs/doxygen/html/search/functions_2.js index bcc4927..254f5cb 100644 --- a/docs/doxygen/html/search/functions_2.js +++ b/docs/doxygen/html/search/functions_2.js @@ -2,6 +2,7 @@ var searchData= [ ['calculateboundaries',['CalculateBoundaries',['../class_element.html#a57f5771fd003020fef3866a1d1dc7487',1,'Element::CalculateBoundaries()'],['../class_line.html#aa146d6b0c7f3b74204f2c88dcbd7f4b0',1,'Line::CalculateBoundaries()']]], ['calculatepowerflowpts',['CalculatePowerFlowPts',['../class_power_element.html#a6c656ef223d36e96b19b0a9ec2115e9e',1,'PowerElement']]], + ['calculatespacestate',['CalculateSpaceState',['../class_transfer_function.html#a5f09dd8e5c016a90c69a8e38ef302c8a',1,'TransferFunction']]], ['consolidate',['consolidate',['../classwx_g_l_string.html#a54a67012ceb50ee50696c0c1fa0a7b55',1,'wxGLString::consolidate()'],['../classwx_g_l_number_renderer.html#aa79114bda6e5e4c3db4b8aeeb5f272c4',1,'wxGLNumberRenderer::consolidate()'],['../classwx_g_l_string_array.html#a2aaa7b340ee571ca6405bbec28715430',1,'wxGLStringArray::consolidate()']]], ['contains',['Contains',['../class_branch.html#a691f94c3cd2abe1274e870d2882634d8',1,'Branch::Contains()'],['../class_bus.html#ad2b960058be6e990463b53d79c74c7a3',1,'Bus::Contains()'],['../class_capacitor.html#a994039e59a8ae0ec3fe7cf7f5b66e4e5',1,'Capacitor::Contains()'],['../class_connection_line.html#a65c6d7139587c973a92dd1009909597f',1,'ConnectionLine::Contains()'],['../class_constant.html#ae091eb79633beb158dc06880424f7ce6',1,'Constant::Contains()'],['../class_element.html#abf6c4949733debca55b2f56d8e9b7372',1,'Element::Contains()'],['../class_exponential.html#a79eabfca357002f160b082a6df9f6f2b',1,'Exponential::Contains()'],['../class_gain.html#a9d80d49f5123cf4859bf15a251e3923f',1,'Gain::Contains()'],['../class_inductor.html#ac3ba7de94a328b20ff86e968a6228f60',1,'Inductor::Contains()'],['../class_i_o_control.html#aa064c5d70e562334e2b374f919f42ef1',1,'IOControl::Contains()'],['../class_limiter.html#ac6506d59da4ea682d9e556564ec3ad11',1,'Limiter::Contains()'],['../class_line.html#a05eb3761f198a058045f85d6e685ca97',1,'Line::Contains()'],['../class_machines.html#acda27b0ea8a7b0fb00d647d8744f346e',1,'Machines::Contains()'],['../class_multiplier.html#acee6216a03b550f3a9cad2bef3963a18',1,'Multiplier::Contains()'],['../class_rate_limiter.html#addf0eef395781b8584063a9061be59dc',1,'RateLimiter::Contains()'],['../class_shunt.html#a449431a2044b838d35cbb991aa1de658',1,'Shunt::Contains()'],['../class_sum.html#a1d1b52ca1b9a81d53c0a9cf140546987',1,'Sum::Contains()'],['../class_text.html#a51c55b9272f653cfc3cdafe665d5dde0',1,'Text::Contains()'],['../class_transfer_function.html#a6a4415d2cf0af290494ea30d586cc187',1,'TransferFunction::Contains()'],['../class_transformer.html#a327ff3cf9194c18049e4feac6761ebc0',1,'Transformer::Contains()']]] ]; diff --git a/docs/doxygen/html/search/functions_e.js b/docs/doxygen/html/search/functions_e.js index acf8b7a..3df8d91 100644 --- a/docs/doxygen/html/search/functions_e.js +++ b/docs/doxygen/html/search/functions_e.js @@ -21,7 +21,7 @@ var searchData= ['setwidth',['SetWidth',['../class_element.html#a5da121470a0c26c6b5c57a7c4eeac48b',1,'Element']]], ['showform',['ShowForm',['../class_bus.html#a93dbd8f80b11123395093f561d5241d0',1,'Bus::ShowForm()'],['../class_capacitor.html#a459b1bbdb153bb9720176661e2960ea6',1,'Capacitor::ShowForm()'],['../class_constant.html#af6bded0e01717303bb71da9e45c2b061',1,'Constant::ShowForm()'],['../class_element.html#ae1652eded3ccbd241a783691117418b2',1,'Element::ShowForm()'],['../class_exponential.html#abdf1c3c1d8e7839fc2a8fc914acff68d',1,'Exponential::ShowForm()'],['../class_gain.html#a6b98027cbf545302867ad75f7ab84b93',1,'Gain::ShowForm()'],['../class_ind_motor.html#add48c9a03d197a6279ca2e33af0fe286',1,'IndMotor::ShowForm()'],['../class_inductor.html#abfaf28fc70a71f3f85940eef7d1551c9',1,'Inductor::ShowForm()'],['../class_i_o_control.html#abbd3054700825f9c4ac1b7c813f7b439',1,'IOControl::ShowForm()'],['../class_limiter.html#a31fd227e010e7d39f1435a70709b14e3',1,'Limiter::ShowForm()'],['../class_line.html#a24c6a659148f063c78e080a18f4517a1',1,'Line::ShowForm()'],['../class_load.html#a792367f35c97324328816fee156e5ecf',1,'Load::ShowForm()'],['../class_multiplier.html#a4fa1206b47c626930db753a70e01680d',1,'Multiplier::ShowForm()'],['../class_rate_limiter.html#a7d16df402b56e0025bab076aa071be60',1,'RateLimiter::ShowForm()'],['../class_sum.html#a8c4bfb1dc965d8ac246de59d1f10888b',1,'Sum::ShowForm()'],['../class_sync_generator.html#a4a9dd07d901f26cc8304399fe241afec',1,'SyncGenerator::ShowForm()'],['../class_sync_motor.html#a3201b22e0271517f5ed3df85da6cee6f',1,'SyncMotor::ShowForm()'],['../class_transfer_function.html#afe15de93ab4f93032560a6139091ef10',1,'TransferFunction::ShowForm()'],['../class_transformer.html#acb55f182a7f6d7af0feb6a94cb62af4f',1,'Transformer::ShowForm()']]], ['showpickbox',['ShowPickbox',['../class_element.html#ab8bf35b4a205fa58772402cea7fad89c',1,'Element']]], - ['solve',['Solve',['../class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29',1,'RateLimiter']]], + ['solve',['Solve',['../class_exponential.html#ae8e635b32b5d6a8226a3654aa639094f',1,'Exponential::Solve()'],['../class_gain.html#a282cab6d339aa89a35c775bbea2aa117',1,'Gain::Solve()'],['../class_rate_limiter.html#a2697e0f56b574739651fa2126b315e29',1,'RateLimiter::Solve()'],['../class_transfer_function.html#ab23ed101f7d4e953e4df0d4d480d9798',1,'TransferFunction::Solve()']]], ['startmove',['StartMove',['../class_branch.html#a947cec45fcdc78d01eaabe19d23daf64',1,'Branch::StartMove()'],['../class_connection_line.html#a292d284d6f30b209995c2a9877f9fe36',1,'ConnectionLine::StartMove()'],['../class_control_element.html#a61440a392d438de163bfe9ffb8e9efec',1,'ControlElement::StartMove()'],['../class_element.html#a846a2a51780a99363b4d4b1812ca16b4',1,'Element::StartMove()'],['../class_line.html#abb812387508a9971570bfa1d38e41041',1,'Line::StartMove()'],['../class_machines.html#acbefe76cd5161b5684a27205b155e797',1,'Machines::StartMove()'],['../class_shunt.html#a56d6136d647f64cf490dd9d7720f6865',1,'Shunt::StartMove()'],['../class_transformer.html#a0395a11dc8173e511a0596ac96bf05e5',1,'Transformer::StartMove()']]], ['stringfromdouble',['StringFromDouble',['../class_element.html#abb2e253ec1e86353cd7160209c96553c',1,'Element']]], ['switchescontains',['SwitchesContains',['../class_power_element.html#a789105cc7c170330e7daf2a0453fde6d',1,'PowerElement']]] diff --git a/docs/doxygen/html/struct_integration_constant.html b/docs/doxygen/html/struct_integration_constant.html index 1974f0b..37563a3 100644 --- a/docs/doxygen/html/struct_integration_constant.html +++ b/docs/doxygen/html/struct_integration_constant.html @@ -92,6 +92,9 @@ $(document).ready(function(){initNavTree('struct_integration_constant.html',''); </div><!--header--> <div class="contents"> +<p>Integration constants to calculate dynamic elements through trapezoidal integration method. + <a href="struct_integration_constant.html#details">More...</a></p> + <p><code>#include <<a class="el" href="_power_element_8h_source.html">PowerElement.h</a>></code></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> @@ -102,7 +105,8 @@ Public Attributes</h2></td></tr> <tr class="separator:adafabd0d37a52d4ed054a800cbce3d65"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira </dd></dl> +<div class="textblock"><p>Integration constants to calculate dynamic elements through trapezoidal integration method. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira </dd></dl> <dl class="section date"><dt>Date</dt><dd>24/05/2017 </dd></dl> <p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00105">105</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> diff --git a/docs/doxygen/html/struct_switching_data.html b/docs/doxygen/html/struct_switching_data.html index 9d82a97..e0e1e97 100644 --- a/docs/doxygen/html/struct_switching_data.html +++ b/docs/doxygen/html/struct_switching_data.html @@ -92,6 +92,9 @@ $(document).ready(function(){initNavTree('struct_switching_data.html','');}); </div><!--header--> <div class="contents"> +<p>Switching data of power elements. + <a href="struct_switching_data.html#details">More...</a></p> + <p><code>#include <<a class="el" href="_power_element_8h_source.html">PowerElement.h</a>></code></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a> @@ -102,7 +105,8 @@ Public Attributes</h2></td></tr> <tr class="separator:a3323745bf0a3f6461fbc19bc76a189df"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> -<div class="textblock"><dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira </dd></dl> +<div class="textblock"><p>Switching data of power elements. </p> +<dl class="section author"><dt>Author</dt><dd>Thales Lima Oliveira </dd></dl> <dl class="section date"><dt>Date</dt><dd>18/01/2017 </dd></dl> <p class="definition">Definition at line <a class="el" href="_power_element_8h_source.html#l00093">93</a> of file <a class="el" href="_power_element_8h_source.html">PowerElement.h</a>.</p> diff --git a/docs/doxygen/html/struct_transfer_function_1_1_space_state.html b/docs/doxygen/html/struct_transfer_function_1_1_space_state.html index aea4d0b..3279fa9 100644 --- a/docs/doxygen/html/struct_transfer_function_1_1_space_state.html +++ b/docs/doxygen/html/struct_transfer_function_1_1_space_state.html @@ -109,7 +109,7 @@ double </td><td class="memItemRight" valign="bottom"><b>D</b></td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"> -<p class="definition">Definition at line <a class="el" href="_transfer_function_8h_source.html#l00031">31</a> of file <a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a>.</p> +<p class="definition">Definition at line <a class="el" href="_transfer_function_8h_source.html#l00038">38</a> of file <a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a>.</p> </div><hr/>The documentation for this struct was generated from the following file:<ul> <li>Project/<a class="el" href="_transfer_function_8h_source.html">TransferFunction.h</a></li> </ul> |